1

我正在为私人目的创建一个电影数据库。作为数据库的一部分,我希望能够通过按流派排序、电影的起始字母或只显示所有来显示电影。

我想在三列表中显示命中,直到数据库表中的所有行都被打印出来。

例如:

Ice age 1     Ice age 2     Ice age 3

Die Hard 1    Die Hard 2    Die hard 3

下面的代码会发生什么(当所有电影都应该显示时使用)是它在 39 行后停止,即使我知道它是 50 行,mysql_num_rows() 返回 50,当我刚刚在 1 列中打印完整的 db 表时,我有50行。

$counterone = 0;
  $countertwo = 0;
  if ($_movietype == 'showmeeverything')
  {
    $movieresult = mysql_query("SELECT url,title FROM movies ORDER BY title");
    if(mysql_num_rows($movieresult) == 0)
    {
        nomovie();
    }

    echo '<p align="center"><a href="index.php">Go back</a></p>';
    echo '<table border="1" cellspacing="2" cellpadding=2" align="center">';
    echo '<tr><td colspan="3" align="center"><b>Title</b></td></tr>';

    echo mysql_num_rows($movieresult);
    while ($counterone < mysql_num_rows($movieresult))
    {
        $counterone++;
        echo '<tr>';
        while (($result = mysql_fetch_array($movieresult)) && $countertwo < 3)
        {
            echo '<td>';
            echo '<a href="'.$result['url'].'">' . $result['title'] . '</a>';
            echo '</td>';
            $countertwo++;
        }
    echo '</tr>';
    $countertwo = 0;
    }
    echo '</table>';
    echo '<p align="center"><a align="center" href="index.php">Go back</a></p>';
  }
4

2 回答 2

1

你没有$counterone在正确的位置增加。您正在计算表 ROWS,但正在处理记录数。$counterone 应该在内部while($result)循环中。一旦它在那里, $countertwo 是多余的。

试试这个:

$counter = 0;
while($row = mysql_fetch_array($movieresult)) {
   if ($counter % 3 == 0)
       echo '<tr>';
   }
   echo "<td> blah blah blah </td>";
   if ($counter % 3 == 2) {
       echo '</tr>';
   }
   $counter++;
}
于 2013-01-17T18:26:02.487 回答
0

尝试这个:

$counterone = 0;
$countertwo = 0;
if ($_movietype == 'showmeeverything')
 {
 $movieresult = mysql_query("SELECT url,title FROM movies ORDER BY title");
 if(mysql_num_rows($movieresult) == 0)
{
    nomovie();
}

echo '<p align="center"><a href="index.php">Go back</a></p>';
echo '<table border="1" cellspacing="2" cellpadding=2" align="center">';
echo '<tr><td colspan="3" align="center"><b>Title</b></td></tr>';

echo mysql_num_rows($movieresult);
$numrows =  mysql_num_rows($movieresult);
while ($counterone < $numrows)
{
    $counterone++;
    echo '<tr>';
    while (($result = mysql_fetch_array($movieresult)) && $countertwo < 3)
    {
        echo '<td>';
        echo '<a href="'.$result['url'].'">' . $result['title'] . '</a>';
        echo '</td>';
        $countertwo++;
    }
echo '</tr>';
$countertwo = 0;
}
echo '</table>';
echo '<p align="center"><a align="center" href="index.php">Go back</a></p>';

}

于 2013-01-17T18:24:53.347 回答