微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 当MySQL记录发生变化时,如何更新页面上显示的值?

我正在尝试创建一个非常简单的拍卖页面,由于这个社区,我越来越近了.

页面非常简单,有些人可以提出他们的名字和出价,出价,然后页面将为他们刷新新的出价(假设它高于当前).不幸的是,这只会刷新出价的页面.

我希望该页面能够针对当前正在查看的所有人进行更新,这样他们就可以确保出价高于当前出价.

我已经在网上看了但找不到太多帮助我,我已经看到这个做了一些叫做轮询,或者AJAX和jQuery – 但是我不确定这些是否相同.

这是我的HTML代码片段,此代码检索拍卖:

<div class="auction-main">
<h1 class="auction-title">Bathroom Accessories</h1>

<?PHP
$con=MysqLi_connect("xxxx","xxxx","xxxx","xxxx");

if (MysqLi_connect_errno())
  {
  echo "Failed to connect to MysqL: " . MysqLi_connect_error();
  }

$result = MysqLi_query($con,"SELECT * From auction WHERE category = 'Bathroom' ORDER BY ID DESC");


while($row = MysqLi_fetch_array($result))
  {
    echo "<form name='auction' id='auction" . $row['ID'] . "'>
            <input type='hidden' name='id' value='" . $row['ID'] . "' />
            <div class='auction-thumb'>
                <div class='auction-name'>" . $row['Item'] . "</div>";
            echo "<img class='auction' src='" . $row['ImagePath'] . "' />";
            echo "<div class='auction-bid'>Current Bid: £<div class='nospace' id='" . $row['ID'] . "'>" . $row['CurrentBid'] . "</div></div>";
            echo "<div class='auction-bid'>Your Name: <input type='text' class='bidder' name='bidname' autocomplete='off'/></div>";
            echo "<div class='auction-bid'>Your Bid: <input type='text' class='auction-text' name='bid' autocomplete='off'/></div>";
            echo "<div class='auction-bid'><input type='submit' name='submit' value='Place Bid!' /></div>";
    echo "</div></form>";
  }
echo "</table>";

MysqLi_close($con);

?>

这是我的jQuery片段,此代码发布到PHP页面以实际放置出价:

<script>
    $(document).ready(function(){
        $('form[name="auction"]').submit(function(){
            var id = $(this).find('input[name="id"]').val();
            var bidname = $(this).find('input[name="bidname"]').val();
            var bid = $(this).find('input[name="bid"]').val();
            var currentbid = $('#'+id).text();
            var itemdesc = $(this).find('.auction-name').text();

            if (bidname == '')
            {
                alert("No name!")
                return false;   
            }

            if (bid > currentbid)
            {
                alert("Bid is greater than current bid");   
            }
            else
            {
                alert("Bid is too low!");
                return false;   
            }

            $.ajax({
            type: "POST",
            url: "auction-handler.PHP",
            data: {bidname: bidname, bid: bid, id: id, itemdesc: itemdesc},
            success: function(data){
                window.location.reload();
                bidname = '';
                bid = '';
                currentbid = '';
            }
        });
        return false;

        }); 
    });
</script>

最后,这是我的PHP片段.此代码将出价发布到MysqL数据库

<?PHP
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);

$con=MysqLi_connect("lena","Admin","1tadm1nI","auction");

if (MysqLi_connect_errno())
    {
            echo "Failed to connect to MysqL: " . MysqLi_connect_error();
    }

$bidname = $_POST['bidname'];
$bid = $_POST['bid'];
$id = $_POST['id'];
$itemdesc = $_POST['itemdesc'];

$query = "UPDATE auction SET CurrentBid = '$bid', Bidder = '$bidname' WHERE ID = '$id'";

$query2 = "INSERT INTO auction_log (Item, Bid, Bidder) VALUES ('$itemdesc','$bid','$bidname')";



MysqLi_query($con, $query) or die(MysqLi_error());

MysqLi_query($con, $query2) or die(MysqLi_error());

MysqLi_close($con);
?>

因此,我在此处显示代码显示出价等.我想要实现的是能够向当前页面上的每个人显示这些新出价.目前,它们出现的唯一方式是,如果有人在放置出价后进入页面,或者用户手动刷新页面.

我希望能够将MysqL数据库上的任何更新“推送”到网页上.

如果有人能给我建议,或者我如何实现这一点的代码片段,我会非常感激.

感谢您阅读,如果您需要更多信息,请告诉我们.

解决方法:

What you are looking for is called Realtime.

您可以使用不同的方法实现此目的.现在使用Ajax,您可以在某个时间间隔内向服务器发送一些请求,并检查是否发生了任何事情,如果发生任何事情,您可以更新它以查看.它叫做pooling.

更多你可以看到这个很棒的答案https://stackoverflow.com/a/12855533/3143384.

希望这会节省你的时间.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐