我创建了一个股票投资组合来尝试学习PHP,我试图让价格字段每30秒自动更新一次。 我可以显示价格,但它们都显示在同一行的一个价格字段中。我想在每一行上显示它们。我已经附上了它现在的样子截图。
我创建了投资组合表,并填写了用户拥有的所有股票。以下是显示投资组合的代码。
<table class="table">
<tr>
<th>Symbol</th>
<th>Name</th>
<th>Shares</th>
<th>Last Price</th>
<th>Market value</th>
</tr>
<?php foreach ($shares as $row): ?>
<tr >
<td><?php echo $row["symbol"];?></td>
<td><?php echo $row["name"];?></td>
<td><?php echo $row["shares"];?></td>
<td id="price">$<?php echo number_format($row["price"],2);?></td>
<td>$<?php echo number_format($row["total"],2);?></td>
</tr>
<?php endforeach; ?>
<tr>
<td>Portfolio Value</td>
<td></td>
<td></td>
<td></td>
<td>$<?php echo number_format($value, 2);?></td>
</tr>
<tr>
<td>Cash available</td>
<td></td>
<td></td>
<td></td>
<td>$<?php echo number_format($cash[0]["cash"], 2);?></td>
</tr>
</table>
<script type="text/javascript" src="js/update.js" ></script>
然后我创建了一个名为update.js的javascript文件,每30秒调用一次update.php文件以更新价格。这是update.js的代码
$(document).ready(function(){
var updater = setTimeout(function(){
$('#price').load('update.php', 'update=true');
},10);
});
update.php使用用户的股票创建一个$ shares数组,并将其发送到portfolio_update.php以显示它。这是update.php的代码
<?php
require("../includes/functions.php");
require("../includes/config_update.php");
$rows = query("SELECT * FROM shares WHERE id = ?", $_SESSION["id"]);
$cash = query("SELECT cash FROM users WHERE id = ?", $_SESSION["id"]);
//create array to store the shares
$shares = array();
//for each of the user info
foreach($rows as $row){
$stock = lookup($row["symbol"]);
if($stock !== false){
$shares[] = array(
"price" => $stock["price"],
"total" => $row["shares"]*$stock["price"]
);
}
}
$size = count($shares);
$value = 0;
for($i = 0; $i < $size; $i++){
$value += $shares[$i]["total"];
}
extract($shares);
require("../templates/portfolio_update.php");
?>
在portfolio_update.php中我显示价格,但它们都显示在一个价格字段上。我想在每一行上显示它们。这是portfolio_update.php代码。
<?php
foreach ($shares as $rows ) {
echo "<tr>";
echo "<td>";
echo number_format($rows["price"],2);
echo "</td>";
echo "</tr>";
}
?>
<script type="text/javascript" src="js/update.js" ></script>
感谢任何帮助。
答案 0 :(得分:0)
将id
更改为class
es。您无法在HTML中重复id
个。并相应地修改jQuery中的选择器(jQuery('.price')
)。
作为旁注,update.php的第6行和第7行看起来像可能倾向于SQL injections。我无法看到query
的作用,所以我不确定。