while循环中的Mysql num行

时间:2011-09-04 00:54:20

标签: php mysql loops while-loop

我需要在ID之前显示一些有序数字,从1到15,所以基本上,我需要在每个新行上都有一个新数字,如下所示:

  1. ID NAME KILLS等
  2. ID NAME KILLS等
  3. ID NAME KILLS等 ...
  4. ID NAME KILLS等
  5. 这是代码,由于某种原因,我失败了“foreach”,我得到了15x15的重复循环......

    $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
    while ($get = mysql_fetch_array($sql))
    {
        echo '<tr><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>';
    

4 个答案:

答案 0 :(得分:2)

在循环之前初始化变量$i = 1;,在循环体的末尾回显它并增加$i++;

$sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());

$i = 1;
while ($get = mysql_fetch_array($sql))
{
    echo '<tr><td>'.$i.'</td><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>';

    $i++;
}

答案 1 :(得分:0)

你只需要添加一个整数来增加。

$sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
$i = 0;
while ($get = mysql_fetch_array($sql))
{
    $i++;
    $strDisplay  = "<tr><td>$i.</td><td>$get['id']</td>";
    $strDisplay .= "<td>$get['kills']</td><td>$get['deaths']</td>";
    $strDisplay .= "<td>$get['hd']</td><td>$get['eff']%</td>";
    $strDisplay .= "<td>$get['acc']%</td><td>$get['damage']</td>";
    $strDisplay .= "<td>$get['shots']</td><td>$get['hits']</td></tr>";

    echo $strDisplay;
}

稍微改变格式以使其更具可读性......

或者您也可以在HTML中使用编号列表。

$sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());
$i = 0;
$strDisplay = "<ol>";
while ($get = mysql_fetch_array($sql))
{
    $i++;
    $strDisplay  .= "<li><tr><td>$get['id']</td>";
    $strDisplay .= "<td>$get['kills']</td><td>$get['deaths']</td>";
    $strDisplay .= "<td>$get['hd']</td><td>$get['eff']%</td>";
    $strDisplay .= "<td>$get['acc']%</td><td>$get['damage']</td>";
    $strDisplay .= "<td>$get['shots']</td><td>$get['hits']</td></tr></li>";
}

$strDisplay .= "</ol>";
echo $strDisplay;

编号列表方法可能不是表格中最好的方法。

答案 2 :(得分:0)

此外,您可以尝试使用mysql_result() php函数迭代for循环,如下所示:

$sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15',$connect) or die (mysql_error());

for ($i = 1; $i <= mysql_num_rows($sql); $i++) {
    $get = mysql_result($sql,$i);
    echo '<tr><td>'.$i.'</td><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>';
}

答案 3 :(得分:-1)

        $sql = mysql_query('SELECT * FROM `sc_rank` ORDER BY `kills` DESC LIMIT 15', $connect) or die(mysql_error());
        $max = mysql_num_rows($sql);
        for($i > 0; $i <= $max; $i++) {
            while($get = mysql_fetch_array($sql)) {
                echo '<tr><td>'.$i.'</td><td>'.$get["id"].'</td><td>'.$get["name"].'</td><td>'.$get["kills"].'</td><td>'.$get["deaths"].'</td><td>'.$get["hd"].'</td><td>'.$get["eff"].'%</td><td>'.$get["acc"].'%</td><td>'.$get["damage"].'</td><td>'.$get["shots"].'</td><td>'.$get["hits"].'</td></tr>'; 
            }
        } 

这个也应该没问题。)