0

我创建了一个股票投资组合来尝试学习 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>

截屏

任何帮助表示赞赏。

4

1 回答 1

0

id将您的 s更改为classes。HTML中不能有重复id的 s。并相应地修改 jQuery 中的选择器(jQuery('.price'))。

附带说明一下,update.php 的第 6 行和第 7 行看起来容易发生SQL 注入。我看不到有什么query作用,所以我不确定。

于 2013-04-03T17:38:17.530 回答