Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当MySQL记录更改时,如何更新页面上显示的值?_Php_Jquery_Html_Mysql_Ajax - Fatal编程技术网

Php 当MySQL记录更改时,如何更新页面上显示的值?

Php 当MySQL记录更改时,如何更新页面上显示的值?,php,jquery,html,mysql,ajax,Php,Jquery,Html,Mysql,Ajax,我正在尝试创建一个非常简单的拍卖页面,多亏了这个社区,我离这个页面越来越近了 该页面非常简单,发生的事情是,有人可以把他们的名字和出价,放置出价,然后页面将刷新他们的新出价(前提是它高于当前)。不幸的是,这只会刷新出价者的页面 我想为每个人更新页面目前正在看它,所以他们可以确保出价高于当前出价 我在网上查过,但找不到什么对我有帮助的东西,我见过一些叫做轮询的东西,或者AJAX和jQuery——但是我不确定它们是否相同 以下是我的HTML代码片段,此代码检索拍卖: <div class="a

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

该页面非常简单,发生的事情是,有人可以把他们的名字和出价,放置出价,然后页面将刷新他们的新出价(前提是它高于当前)。不幸的是,这只会刷新出价者的页面

我想为每个人更新页面目前正在看它,所以他们可以确保出价高于当前出价

我在网上查过,但找不到什么对我有帮助的东西,我见过一些叫做轮询的东西,或者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);

?>

浴室配件
你要找的是实时

您可以使用不同的方法来实现这一点。现在,使用Ajax,您可以在一定的时间间隔内向服务器发送一些请求,并检查是否发生了任何事情,如果发生了任何事情,您可以将其更新为view。它叫

更多信息,你可以看到这个令人敬畏的答案


希望这能节省你的时间

您需要从服务器端更新客户端(或者至少触发客户端,让它知道有新数据要从服务器中提取)。一种方法是使用
WebSockets
。这不是一件简单的事情,但这可能会帮助您最好使用sockets来实现这一目的。Jquery和AJAX的另一种方法是每秒(大约每秒)更新一次并刷新信息。但最好的方法是使用插座。你可以在谷歌上查到。例如,您可以尝试在setTimeLimit中调用一个简单的ajax函数,并每隔“N”秒刷新一次内容。这不是一个很好的解决方案,但是很管用,或者如果你不坚持使用mysql,那么你可以看看
referenceDB
谢谢。所以我还是有点不确定——我会使用长轮询吗?我的建议是Websocket看看这个。但是,如果您是新手,您也可以使用长池,这也是简单的ajax请求。好的,谢谢。最后一个问题,如果我在mySQL查询中检索到超过1行,长轮询是否有效?我在网上找到的大多数解决方案似乎总是一次检索一个值,但我想更新任何已更改的值。
<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
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);
?>