2013-03-27 89 views
-2

我想通过创建一个股票组合来学习php和javascript。我想要做的是自动更新表格的价格单元,而不使用JavaScript刷新页面。我创建了一个新的php文件来获取组合的价格字段,但我似乎无法使其工作。我在价格领域遇到很多错误。我已将所有文件放在这里pastebin。任何帮助,将不胜感激。 enter image description here只传递一个值到php文件

portfolio.php file 

<table class="table table-hover center-table table-bordered"> 
     <tr> 
     <th>Symbol</th> 
     <th>Name</th> 
     <th>Shares</th> 
     <th>Price</th> 
     <th>Total</th> 
     </tr> 
<?php foreach ($shares as $row): ?> 

     <tr> 
     <td><?= $row["symbol"]?></td> 
     <td><?= $row["name"]?></td> 
     <td><?= $row["shares"]?></td> 

     <td id="price">$<?= number_format($row["price"],2)?></td> 

     <td>$<?= number_format($row["total"],2)?></td> 
     </tr> 

<? endforeach ?> 



<tr> 
    <td>CASH</td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td>$<?= number_format($cash[0]["cash"], 2)?></td> 

</tr> 

</table> 

<script type="text/javascript" src="js/update.js" ></script> 

index.php文件

<?php 

// configuration 
require("../includes/config.php"); 

//query user's portfolio 

$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 = []; 

    //for each of the user info 

    foreach($rows as $row){ 

     //lookup stock info 
     $stock = lookup($row["symbol"]); 


     if($stock !== false){ 

      $shares[] = [ 
       "name" => $stock["name"], 
       "price" => $stock["price"], 
       "shares" => $row["shares"], 
       "symbol" => $row["symbol"], 
       "total" => $row["shares"]*$stock["price"] 

      ]; 
       //dump($shares);  
     } 

    } 

// render portfolio 
render("portfolio.php", ["shares" => $shares,"cash" => $cash, "title" => "Portfolio"]); 
?> 

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 = []; 

    //for each of the user info 

    foreach($rows as $row){ 

     $stock = lookup($row["symbol"]); 

     if($stock !== false){ 

      $shares[] = [ 

       "name" => $stock["name"], 
       "price" => $stock["price"], 
       "shares" => $row["shares"], 
       "symbol" => $row["symbol"], 
       "total" => $row["shares"]*$stock["price"] 
      ]; 

     } 
    } 

// render portfolio 
render("portfolio.php", ['shares' => $shares, 'cash' => $cash]); 
?> 

update.js

$(document).ready(function(){ 
    var updater = setTimeout(function(){ 
     $('#price').load('update.php', 'update=true'); 
    },6); 
}); 

当我运行此我首先得到整个标签le在价格单元以及这些错误消息注意:未定义的变量:份额portfolio.php行10 提供的foreach()在portfolio.php第10行中的无效参数 未定义变量现金在portfolio.php在行31

我不再有任何错误,但现在我得到整个页面在表格中的价格字段。

+2

请编辑的问题,并张贴一些代码,你有任何错误消息。 – Jess 2013-03-27 15:56:13

+0

请勿使用jsFiddle或pastebin等外部服务托管您的代码。代码出现在问题中,然后你可以用一个工作示例来补充你的问题。 – meagar 2013-03-27 16:00:09

+0

对不起。用问题发布代码。 – tironci 2013-03-27 16:08:59

回答

1

你要传递的index.php中的参数,其中一个具有关键shares一个数组,然而在update.php你想只是传回该数组,在update.php改变这种

render("portfolio.php", $share); 

render("portfolio.php", ['shares' => $share]); 
+0

当我这样做时,我仍然收到错误消息。未定义的指数:第13行的portfolio.php中的符号未定义的指数:第14行的portfolio.php中的名称我对股票,总数和现金都有同样的看法。 – tironci 2013-03-27 16:27:53

+1

您将会为update.php中的每个共享返回'$ row ['price']'。或者让它匹配你在index.php中返回的数组,或者检查这些值是否在尝试在portfolio.php中使用之前设置。 – Crisp 2013-03-27 16:31:17

+0

我在update.php中匹配index.php中的数组,现在我没有得到任何错误消息,但我得到整个页面在表格中的价格单元格内。 – tironci 2013-03-27 16:46:20