Я создал портфель акций, чтобы попробовать и изучить PHP, и я пытаюсь обновить поле цены каждые 30 секунд. Я могу отображать цены, но все они отображаются в одном ценовом поле в той же строке. Я хочу показать их на каждой из строк. Я прикрепил скриншот того, как он выглядит сейчас.Обновление поля таблицы с php
У меня есть таблица портфеля, созданная и заполненная всеми запасами, которые имеет пользователь. Вот код для показа портфолио.
<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, который вызывает update.php файл каждые 30 секунд, чтобы обновить цену. Вот код для update.js
$(document).ready(function(){
var updater = setTimeout(function(){
$('#price').load('update.php', 'update=true');
},10);
});
update.php создает массив $ акций с акциями пользователя и отправляет его 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>
Любая помощь приветствуется.
И проблема в том, что ...? –
В JS вы обновляете только одно поле (с идентификатором «цена»). Вместо id вы могли бы сделать его классом и вызывать '$ .each (". Price ")' для работы с каждой отдельной строкой в JS – kero
Я изменил свой JS-файл, и теперь я получаю обе цены в обеих строках '$ (документ() { var updater = setTimeout (функция update = true '); }; }, 10); }); ' – tironci