2012-07-24 94 views
0

我想讓分頁工作在我的網站上。一切都應該工作,但這隻顯示一個產品,但應該是8個產品。有人知道什麼是錯的? 在此先感謝。爲什麼這隻顯示我的一個記錄?

else { 
$query = "SELECT COUNT(*) FROM products"; 
$result = mysql_query($query) or die(mysql_error()); 
$num_rows = mysql_fetch_row($result); 
$pages = new Paginator; 
$pages->items_total = $num_rows[0]; 
$pages->mid_range = 9; 
$pages->paginate(); 

$query = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit"; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_row($result); 
{ 
echo '<div style="margin-bottom:10px;display:inline-block;background-color:#E3E3E3;width:190px;height:200px;"><a href="'.$_SERVER['PHP_SELF'].'?serial='.$row[0].'"><img style="padding-top:10px;padding-left:25px;width:150px;height:150px;" src="'.htmlspecialchars($row[4]).'"></a><br><div align="center"><b>'.htmlspecialchars($row[1]).'</b><br><h6>&euro;'.htmlspecialchars($row[3]).'</h6></div></div>'; 
}; 
echo '&nbsp;'; 
echo '<br><br><div style="margin-left:330px;">'; 
echo $pages->display_pages(); 
echo '</div>'; 
} 
?>  

回答

3

mysql_fetch_row()一次只取一行。你需要重複調​​用它來顯示所有的行,像這樣:

while ($row = mysql_fetch_row($result)) { 
    // handle single row 
} 

我建議你考慮使用mysql_fetch_array()代替。那麼你將不再需要依靠列的順序了,代碼變得更清晰: $row[0]變成$row["serial"]

嘗試閱讀@庫什鏈接的文章。有關PHP特定的討論,請參閱here

+0

感謝您的工作! – Thakkennes 2012-07-24 09:49:30

0

,因爲這條線的

$row = mysql_fetch_row($result); 

應該

while($row = mysql_fetch_row($result)){... 
0

更改線路

$row = mysql_fetch_row($result); 

while ($row = mysql_fetch_row($result)) 
1

你似乎沒有使用正確mysql_fetch_row()


下面的代碼很容易受到SQL injection因爲$頁面級>限制似乎並沒有被消毒

$query = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit"; 

停止使用mysql_ *功能,因爲他們已棄用。改爲使用PHP database objects (PDO),因爲PDO允許使用參數綁定來保護您免受sql注入。

您可以閱讀使用PDO here

相關問題