在一个while循环中回声?

时间:2014-03-02 05:28:09

标签: php mysql while-loop echo

好吧,所以我试图在游戏中将前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++;
}
?>

这很难解释,所以我希望你理解。谢谢你的帮助!

5 个答案:

答案 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>";
                ?>