用php更新表字段

时间:2013-04-03 15:45:23

标签: php javascript jquery html5

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

screenshot

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

id更改为class es。您无法在HTML中重复id个。并相应地修改jQuery中的选择器(jQuery('.price'))。

作为旁注,update.php的第6行和第7行看起来像可能倾向于SQL injections。我无法看到query的作用,所以我不确定。