2013-01-17 113 views
1

我正在爲私人目的創建電影數據庫。作爲數據庫的一部分,我希望能夠通過按流派排序來顯示電影,電影的開頭字母或只顯示全部。不打印mysql表中的所有行

我想在三列表中顯示匹配,直到數據庫表中的所有行都被打印完畢。

例如:

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列中打印完整的分表時,我得到了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>'; 
    } 
+0

是否被跳過每4個電影?我的猜測是,在你的嵌套while循環中'$ result = mysql_fetch_array($ movieresult)'不管你是否進入循環都會移動指針。 – Jrod

回答

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>'; 

}

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++; 
} 
+0

啊,謝謝!工作完美無瑕! – user1988083