由于某种原因,下面的代码在所有项目的LPrice位置输出正确的自动收报机,但仅输出PCT和PNL的第二个数据元素的正确数据。意思是,第1行输出仅填充在一个部分中,而第2行填充所有正确部分。注意:表中目前只有2个元素。
<?php
$host="localhost"; // Host name
$username="abc"; // Mysql username
$password="password"; // Mysql password
$db_name="abc"; // Database name
$tbl_name="portfolio"; // Table name
$conn=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="select * from ".$tbl_name.";";
$result = mysql_query($sql) or die(mysql_error());
echo '<table class="tickerContain">';
echo '<tr>';
echo '<td>ID</td>';
echo '<td>TICKER</td>';
echo '<td>PRICE</td>';
echo '<td>CommIn</td>';
echo '<td>CommOut</td>';
echo '<td>DateIn</td>';
echo '<td>LPrice</td>';
echo '<td>%CHG</td>';
echo '<td>PNL</td>';
$tblOut='';
while ($row = mysql_fetch_array($result))
{
$tick='';
$tick=$row["ticker"];
$tblOut.= '<tr>';
$tblOut.= '<td id="'.$tick.'id">' . $row["id"] . '</td>';
$tblOut.= '<td id="'.$tick.'ticker">' . $tick . '</td>';
$tblOut.= '<td id="'.$tick.'price">' . $row["price"] . '</td>';
$tblOut.= '<td id="'.$tick.'commissionIn">' . $row["commissionIn"] . '</td>';
$tblOut.= '<td id="'.$tick.'commissionOut">' . $row["commissionOut"] . '</td>';
$tblOut.= '<td id="'.$tick.'dateIn">' . $row["dateIn"] . '</td>';
$tblOut.= '<td><textarea class="realTime" id="'.$tick.'LPrice">'.$tick.'</textarea></td>';
$tblOut.= '<td><textarea class="realTime" id="'.$tick.'pctChange">'.$tick.'</textarea></td>';
$tblOut.= '<td><textarea class="realTime" id="'.$tick.'pnl">'.$tick.'</textarea></td>';
$tblOut.= '</tr>';
}
echo $tblOut;
echo '</table>';
答案 0 :(得分:2)
你的while
循环在每次迭代时关闭了它上方的<tr>
标记,但是你无法用那个完全无法读取的代码看到它。
我冒昧地为你整理了它:
您还分配了一些完全无用的变量。我也解决了这个问题。
<?php
$host="localhost"; // Host name
$username="abc"; // Mysql username
$password="password"; // Mysql password
$db_name="abc"; // Database name
$tbl_name="portfolio"; // Table name
$conn=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="select * from ".$tbl_name.";";
$result = mysql_query($sql) or die(mysql_error());
?>
<table class="tickerContain">
<tr>
<td>ID</td>
<td>TICKER</td>
<td>PRICE</td>
<td>CommIn</td>
<td>CommOut</td>
<td>DateIn</td>
<td>LPrice</td>
<td>%CHG</td>
<td>PNL</td>
</tr>
<?php while ($row = mysql_fetch_array($result)) : ?>
<tr>
<td id="<?php echo $row["ticker"]; ?>id">
<?php echo $row["id"]; ?>
</td>
<td id="<?php echo $row["ticker"]; ?>ticker">
<?php echo $row["ticker"]; ?>
</td>
<td id="<?php echo $row["ticker"]; ?>price">
<?php echo $row["price"]; ?>
</td>
<td id="<?php echo $row["ticker"]; ?>commissionIn">
<?php echo $row["commissionIn"]; ?>
</td>
<td id="<?php echo $row["ticker"]; ?>commissionOut">
<?php echo $row["commissionOut"]; ?>
</td>
<td id="<?php echo $row["ticker"]; ?>dateIn">
<?php echo $row["dateIn"]; ?>
</td>
<td>
<textarea class="realTime" id="<?php echo $row["ticker"]; ?>LPrice">
<?php echo $row["ticker"]; ?>
</textarea>
</td>
<td>
<textarea class="realTime" id="<?php echo $row["ticker"]; ?>pctChange">
<?php echo $row["ticker"]; ?>
</textarea>
</td>
<td>
<textarea class="realTime" id="<?php echo $row["ticker"]; ?>pnl">
<?php echo $row["ticker"]; ?>
</textarea>
</td>
</tr>
<?php endwhile; ?>
</table>
此外,我建议将数据库代码移动到另一个文件,并将其包含在脚本中。
看看MVC架构(http://en.wikipedia.org/wiki/Model - 视图控制器),它将显着帮助您保持代码清洁。