2013-01-10 60 views
1

嗨stackoverflow讀者和工作人員,我有一個問題,使用分頁代碼。 當我使用SELECT COUNT(*)作爲num FROM $ tbl_name時,所有的都很好,但是當我嘗試SELECT COUNT(*)作爲num FROM $ tbl_name WHERE marca = nokia時,僅分頁包含「nokia」從名爲「modele」的表中輸入「marca」,並且收到一個錯誤:「警告:mysql_fetch_array()期望參數1是資源,在第17行E:\ server \ htdocs \ pag.php中給出的布爾值」PHP分頁使用SELECT COUNT(*)作爲

這是代碼的框架:

$marca = $_GET['marca']; 
/* 
    First get total number of rows in data table. 
    If you have a WHERE clause in your query, make sure you mirror it here. 
*/ 
$query = "SELECT COUNT(*) as num FROM $tbl_name WHERE marca=$marca"; 
$total_pages = mysql_fetch_array(mysql_query($query)); 
$total_pages1 = $total_pages['num']; 

/* Setup vars for query. */ 
$targetpage = "paginare.php"; //your file name (the name of this file) 
$limit = 5;         //how many items to show per page 
$page = $_GET['pagina']; 
if($page) 
    $start = ($page - 1) * $limit;   //first item to display on this page 
else 
    $start = 0;        //if no page var is given, set start to 0 

/* Get data. */ 
$sql = "SELECT * FROM $tbl_name LIMIT $start, $limit"; 
$result = mysql_query($sql); 
if ($page == 0) $page = 1;     //if no page var is given, default to 1. 
$prev = $page - 1;       //previous page is page - 1 
$next = $page + 1;       //next page is page + 1 
$lastpage = ceil($total_pages/$limit);  //lastpage is = total pages/items per page, rounded up. 
$lpm1 = $lastpage - 1;      //last page minus 1 

/* 
    Now we apply our rules and draw the pagination object. 
    We're actually saving the code to a variable in case we want to draw it more than once. 
*/ 
$pagination = ""; 
if($lastpage > 1) 
{ 
    $pagination .= "<div class=\"pagination\">"; 
    //previous button 
    if ($page > 1) 
     $pagination.= "<a href=\"$targetpage?page=$prev\">« Inapoi</a>"; 
    else 
     $pagination.= "<span class=\"disabled\">« Inapoi</span>"; 

    //pages 
    if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up 
    { 
     for ($counter = 1; $counter <= $lastpage; $counter++) 
     { 
      if ($counter == $page) 
       $pagination.= "<span class=\"current\">$counter</span>"; 
      else 
       $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
     } 
    } 
    elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some 
    { 
     //close to beginning; only hide later pages 
     if($page < 1 + ($adjacents * 2))   
     { 
      for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) 
      { 
       if ($counter == $page) 
        $pagination.= "<span class=\"current\">$counter</span>"; 
       else 
        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
      } 
      $pagination.= "..."; 
      $pagination.= "<a href=\"$targetpage?pagina=$lpm1\">$lpm1</a>"; 
      $pagination.= "<a href=\"$targetpage?pagina=$lastpage\">$lastpage</a>";  
     } 
     //in middle; hide some front and some back 
     elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
     { 
      $pagination.= "<a href=\"$targetpage?pagina=1\">1</a>"; 
      $pagination.= "<a href=\"$targetpage?pagina=2\">2</a>"; 
      $pagination.= "..."; 
      for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) 
      { 
       if ($counter == $page) 
        $pagination.= "<span class=\"current\">$counter</span>"; 
       else 
        $pagination.= "<a href=\"$targetpage?pagina=$counter\">$counter</a>";     
      } 
      $pagination.= "..."; 
      $pagination.= "<a href=\"$targetpage?pagina=$lpm1\">$lpm1</a>"; 
      $pagination.= "<a href=\"$targetpage?pagina=$lastpage\">$lastpage</a>";  
     } 
     //close to end; only hide early pages 
     else 
     { 
      $pagination.= "<a href=\"$targetpage?pagina=1\">1</a>"; 
      $pagination.= "<a href=\"$targetpage?pagina=2\">2</a>"; 
      $pagination.= "..."; 
      for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page) 
        $pagination.= "<span class=\"current\">$counter</span>"; 
       else 
        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
      } 
     } 
    } 

    //next button 
    if ($page < $counter - 1) 
     $pagination.= "<a href=\"$targetpage?page=$next\">Inainte »</a>"; 
    else 
     $pagination.= "<span class=\"disabled\">Inainte »</span>"; 
    $pagination.= "</div>\n";  
} 

在這裏,我的PHP已經結束,遺憾的英語不好,並感謝你提前。馬塞爾

+0

有你累呼應查詢 – knightrider

+1

[* *請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。它們不再被維護[並且被官方棄用](https://wiki.php。 net/rfc/mysql_deprecation)。參見[**紅框**](http://j.mp/Te9zIL)?瞭解[* prepared statements *](http://j.mp/T9hLWi)in取而代之,並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Kermit

+0

與本網站上的其他所有重複內容一樣:由於查詢失敗,您認爲它成功,並且在使用該失敗的查詢前盲目投入,您會得到該錯誤。 –

回答

2

在SQL任何字符串需要通過「或」 包圍這樣的:

$query = "SELECT COUNT(*) as num FROM $tbl_name WHERE marca='{$marca}'"; 

有了結果查詢:

SELECT COUNT(*) as num FROM $tbl_name WHERE marca='nokia' 
+0

現在我收到此錯誤:致命錯誤:在第37行E:\ server \ htdocs \ pag.php中不支持的操作數類型是:$ lastpage = ceil($ total_pages/$ limit); –

+0

因爲數組中的$ total_pages。你想要使用'$ total_pages1' :) –

+0

Thankyou Vlad(Si eu sunt Roman ca tine si i-mi face o imensa placere sa vad ca un Roman Roman ajuta un alt Roman dar si alti mici programatori care vor citi discutia noastra),RESPECT ! –