2013-04-24 76 views
0

我目前正在嘗試在我正在處理的內容網站的分頁系統上工作。基於MySQL頁面的查詢

目前用戶每頁顯示10個結果。當用戶訪問http://www.mydomain.com/page/1時,它應該顯示錶中的前10個條目。如果他們訪問http://www.mydomain.com/page/2它應該顯示接下來的10個結果。

下面是我目前的功能來執行任務,在訪問一個頁面似乎並沒有工作 - 任何想法可能是什麼原因造成這種情況?

function getPagedPosts() { 
$pageid = $_GET[page]; 
$page = $pageid - 1 * 10; 
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
$query = " 
    SELECT * 
    FROM content 
    LIMIT '$page', 10 
"; 

    try 
    { 
     $stmt = $db->prepare($query); 
     $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 

    $rows = $stmt->fetchAll(); 
foreach($rows as $row): 
    print '<tr><td><a href="post/' . $row['id'] . '">' . $row['title'] . '</a><div class="sub ' . $row['subject'] . '">' . $row['subject'] . '</div></td></tr>'; 
endforeach; 

}

+0

出了什麼問題_exactly_? (然而,幸運的是:刪除查詢周圍''$ page''的引號,_string_對於'LIMIT'子句是無效的,我會讓它成爲'$ page =(max((int)$ pageid,1)-1)* 10;'也是爲了擺弄你的網址的人... – Wrikken 2013-04-24 18:19:54

+0

謝謝 - 所有人似乎都在工作!沒有任何結果顯示在你的問題上。 – user2259473 2013-04-24 18:23:07

回答

0

我創建了一個稱爲分頁功能:

<?php 

function pagination($query, $per_page = 10,$page = 1, $url = '?'){   
    $query = "SELECT COUNT(*) as `num` FROM {$query}"; 
    $row = mysql_fetch_array(mysql_query($query)); 
    $total = $row['num']; 
    $adjacents = "2"; 

    $page = ($page == 0 ? 1 : $page); 
    $start = ($page - 1) * $per_page;        

    $prev = $page - 1;       
    $next = $page + 1; 
    $lastpage = ceil($total/$per_page); 
    $lpm1 = $lastpage - 1; 

    $pagination = ""; 
    if($lastpage > 1) 
    { 
     $pagination .= "<ul class='pagination'>"; 
       $pagination .= "<li class='details'>Page $page of $lastpage</li>"; 
     if ($lastpage < 7 + ($adjacents * 2)) 
     { 
      for ($counter = 1; $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page) 
        $pagination.= "<li><a class='current'>$counter</a></li>"; 
       else 
        $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
      } 
     } 
     elseif($lastpage > 5 + ($adjacents * 2)) 
     { 
      if($page < 1 + ($adjacents * 2))   
      { 
       for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<li><a class='current'>$counter</a></li>"; 
        else 
         $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
       } 
       $pagination.= "<li class='dot'>...</li>"; 
       $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>"; 
       $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";  
      } 
      elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
      { 
       $pagination.= "<li><a href='{$url}page=1'>1</a></li>"; 
       $pagination.= "<li><a href='{$url}page=2'>2</a></li>"; 
       $pagination.= "<li class='dot'>...</li>"; 
       for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<li><a class='current'>$counter</a></li>"; 
        else 
         $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
       } 
       $pagination.= "<li class='dot'>..</li>"; 
       $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>"; 
       $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";  
      } 
      else 
      { 
       $pagination.= "<li><a href='{$url}page=1'>1</a></li>"; 
       $pagination.= "<li><a href='{$url}page=2'>2</a></li>"; 
       $pagination.= "<li class='dot'>..</li>"; 
       for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<li><a class='current'>$counter</a></li>"; 
        else 
         $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";      
       } 
      } 
     } 

     if ($page < $counter - 1){ 
      $pagination.= "<li><a href='{$url}page=$next'>Next</a></li>"; 
      $pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>"; 
     }else{ 
      $pagination.= "<li><a class='current'>Next</a></li>"; 
      $pagination.= "<li><a class='current'>Last</a></li>"; 
     } 
     $pagination.= "</ul>\n";   
    } 


    return $pagination; 
} 
?> 

然後添加以下代碼在PHP頁面的頂部分頁:

<?php 
//get the function 
include_once ('include/functions/pagination.php'); 

    $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]); 
    $limit = 5; 
    $startpoint = ($page * $limit) - $limit; 

    //to make pagination 
    $statement = "`prodcat_mst`"; //table name 'prodcat_mst' 
?> 

我的SQL查詢:

$sqryprodcat_mst = "select prodcatm_id,prodcatm_name,prodcatm_mnimg,prodcatm_sts,prodcatm_prty from {$statement} {$ordrby} LIMIT {$startpoint}, {$limit}"; 

顯示pagniation:

<?php 
    echo pagination($statement,$limit,$page); 
?> 

希望這有助於。