我试图在MySQL表格的每一行上每秒使用jQuery显示一个竞价项目状态的结果,但是只返回该表格最后一行的结果。
<?php
$query = "SELECT item, description, price, imageData, status, username, item_id FROM items";
$result = mysql_query($query) or die(mysql_error());
$z=0;
while($row = mysql_fetch_array($result))
{
//echo other columns here//
echo "<td><div id=status$z></div></td>";
?>
<script type=text/javascript>
function updatestatus(itemnum)
{
var url="updatestatus.php?auc=<?php echo $row['item_id']; ?>";
jQuery('#status' + itemnum).load(url);
}
setInterval("updatestatus(<? echo $z?>)", 1000);
</script>
<?
$z++;
}
?>
当我在浏览器中查看源时,每行的#status和auc值都是正确的。我在这里缺少什么?
这是updatestatus.php的代码
<?php
session_start();
require_once("connect.php");
$id = $_GET['auc'];
$getstatus = mysql_query("SELECT status FROM items WHERE item_id = '$id' ");
$row = mysql_fetch_array($getstatus);
echo"$row[status]";
?>
答案 0 :(得分:0)
我没有看到您使用增量器填充数据。这应该是在页面中添加内容还是替换内容?从它看起来它只会显示一个项目,然后用下一个项目替换它直到它完成,这就是为什么你只看到最后一行。
或......
jquery更新没有被提供$ i变量..将函数更改为
function updatestatus(itemnum){
然后jquery echo到jQuery('#status'+ itemnum).load(url);
然后你可以添加点击/或任何包含数字的内容 的onclick = 'updatestatus( “1”)'
另一方面,你可能需要将项目总数传递给函数,然后创建一个如果在那里循环它们(未经测试,但你得到了我希望的想法)
function updatestatus(numitems) {
var url = "";
var itemID = "";
for (i = 1; i <= numitems; i++) {
itemid = getElementById('#status'+numitems).getAttribute("itemID")
url="updatestatus.php?auc="+itemID;
jQuery('#status'+numitems).load(url);
}
}
setInterval("updatestatus()", 1000);
并且PHP创建的“#status1”的html元素应如下所示:
<div id="status1" itemid="23455">
</div>
答案 1 :(得分:0)
一切看起来都不错,除非您看起来像是在创建对updatestatus()
函数的多个引用。
在Javascript中,如果你创建了多个具有相同名称的函数,调用它们只会导致其中一个函数运行,通常是第一个或最后一个(取决于实现),所以你需要在那些代码中运行所有代码函数需要在一个函数体中一起使用。
如果您决定使用自己创建的代码,则需要将所有这些更新调用放入一个函数体中。有更好的方法来实现您的需求,但是使用您创建的代码来实现它,这可能会更好:
<?php
$query = "SELECT item, description, price, imageData, status, username, item_id FROM items";
$result = mysql_query($query) or die(mysql_error());
$javascript = "";
$z=0;
while($row = mysql_fetch_array($result))
{
//echo other columns here//
echo "<td><div id=status$z></div></td>";
// build the javascript to be put in the function later over here...
$javascript .= "jQuery('#status". $z ."').load('updatestatus.php?auc=". $row['item_id'] ."');";
$z++;
}
?>
...然后在页面下方,创建javascript(略有修改):
<script type=text/javascript>
function updatestatus()
{
<?php echo $javascript; ?>
}
setInterval(updatestatus, 1000);
</script>
所以你基本上构建了你在函数中需要的Javascript,在函数体内回显它,然后设置间隔将调用所有代码,在这种情况下,每隔一秒
就像我说的那样,肯定有更有效的方法来实现你想要做的事情,但是现在应该可以正常工作。我希望这是有道理的,但如果你需要任何明确的话,请告诉我! :)