好吧,所以我试图在游戏中将前10个最高级别的角色显示在页面上。一个例子:
Rank Name Level
1 Greg 10
2 Alex 8
我正在做一个while循环来显示前10个字符,但是我不想继续显示“Rank Name Level”,我只想显示10个等级,但它不断重复“等级名称”水平”。我正在回声中显示表格,但我无法附加2个回声,因此表格不会被连接。我想只在10条记录上做一个while循环,但仍然可以让我的表完全附加。
这是我的代码:
<?php
Include 'fart.php';
$rank = mysql_query('SELECT Name,Level FROM characters WHERE level>10'
.' ORDER by Level desc LIMIT '.$limit.';');
$i=1;
while ($row = mysql_fetch_array($rank)) {
echo '
<table>
<tr>
<td>Rank</td>
<td>Name</td>
<td>Level</td>
</tr>
<tr>
<td>'.$i.'</td>
<td>'.$row['Name'].'</td>
<td>'.$row['Level'].'</td>
</tr>
</table>';
$i++;
}
?>
这很难解释,所以我希望你理解。谢谢你的帮助!
答案 0 :(得分:1)
只需将表格标题放在while
循环之外:
$table = '<table>
<tr>
<th>Rank</th>
<th>Name</th>
<th>Level</th>
</tr>';
while ($row = mysql_fetch_array($rank)) {
$table .= '<tr>
<td>'.$i.'</td>
<td>'.$row['Name'].'</td>
<td>'.$row['Level'].'</td>
</tr>';
$i++;
}
$table .= '</table>';
echo $table;
答案 1 :(得分:0)
只需在循环之前打印表头:
echo '<table>
<tr>
<td>Rank</td>
<td>Name</td>
<td>Level</td>
</tr>';
while ($row = mysql_fetch_array($rank)) {
echo '<tr>
<td>'.$i.'</td>
<td>'.$row['Name'].'</td>
<td>'.$row['Level'].'</td>
</tr>';
$i++;
}
echo '</table>';
答案 2 :(得分:0)
三件事:
1)要回答你的问题,请停止在while循环中构建整个表:
<?php
// fetch stuff...
echo '<table><tr><th>Rank</th><th>Name</th><th>Level</th></tr>';
while ($row = mysql_fetch_array($rank)) {
// Print row for player
}
// close table
echo '</table>'
2)我不知道$limit
来自哪里,但该查询很可能是SQL注入,而是使用PDO或Prepared Statements。
3)如果您要使用mysql函数而不是PDO,请使用mysqli
,{I}}系列已弃用IIRC。
答案 3 :(得分:0)
请改用此代码:
<?php
Include 'fart.php';
$rank = mysql_query('SELECT Name,Level FROM characters WHERE level>10'
.' ORDER by Level desc LIMIT '.$limit.';');
$i=1;
echo '
<table>
<tr>
<td>Rank</td>
<td>Name</td>
<td>Level</td>
</tr>';
while ($row = mysql_fetch_array($rank)) {
echo '
<tr>
<td>'.$i.'</td>
<td>'.$row['Name'].'</td>
<td>'.$row['Level'].'</td>
</tr>;
$i++;
}
echo '</table>';
?>
标题一直在继续,因为你已将它保留在循环中。但如果您想按照自己的方式进行操作,请尝试以下代码:
<?php
Include 'fart.php';
$rank = mysql_query('SELECT Name,Level FROM characters WHERE level>10'
.' ORDER by Level desc LIMIT '.$limit.';');
$i=1;
while ($row = mysql_fetch_array($rank)) {
if($i==1)
{
echo '
<table>
<tr>
<td>Rank</td>
<td>Name</td>
<td>Level</td>
</tr>';
}
echo '
<tr>
<td>'.$i.'</td>
<td>'.$row['Name'].'</td>
<td>'.$row['Level'].'</td>
</tr>
</table>';
$i++;
}
?>
答案 4 :(得分:0)
<?php
Include 'fart.php';
$rank = mysql_query('SELECT Name,Level FROM characters WHERE level>10'
.' ORDER by Level desc LIMIT '.$limit.';');
echo "<table border='1'>";
echo "<tr> <th>RANK</th> <th>NAME</th> <th>LEVEL</th></tr>";
$i=1;
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $rank )) {
// Print out the contents of each row into a table
echo "<tr><td>";
echo $i;
echo "</td><td>";
echo $row['Name'];
echo "</td><td>";
echo $row['Level'];
echo "</td></tr>";
$i++;
}
echo "</table>";
?>