2012-12-16 190 views
1

即時通訊嘗試學習與PHP/PDO分頁。在PDO分頁PHP

  $limit = 20; 
      $sth = $conn->prepare("SELECT * FROM directory WHERE user_active != ''"); 
      $sth->execute(array(':county' => $county)); 

      $c = 1; 
      while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
       echo 'Resutls will be here'; 
      $c++; 
      } 

林不清楚下一步該怎麼做,雖然,有任何一個很好的起點,我可以從引用,或可以解釋這個過程給我嗎?

感謝

+1

'LIMIT' ......... – itachi

+0

我沒有看到任何問題被拒絕投票。誰投下了它,他應該給我們一個理由 – Musa

回答

1

沒有測試

$page = 1; 
$limit = 20; 
$start = $page * $limit; 

$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE); 
$sth = $conn->prepare("SELECT * FROM directory WHERE user_active LIMIT ?,?"); 
$sth->execute(array($start,$limit)); 
+0

謝謝@你的常識,我怎麼會添加下一個按鈕? – Liam

+2

那麼沒有關於下一個按鈕或實際頁碼的信息? –

0

請使用下面的代碼爲分頁使用PDO:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>Simple Pagination Demo using PDO Query</title> 
    <!-- CSS File --> 
<link href="css/pagination.css" rel="stylesheet"> 
</head> 
<body> 
<?php 
// mysql hostname 
$hostname = 'localhost'; 
// mysql username 
$username = 'root'; 
// mysql password 
$password = ''; 
// Database Connection using PDO with try catch method. 
try { $dbh = new PDO("mysql:host=$hostname;dbname=PaginationTestDb", $username, $password); } 
// In case of error PDO exception will show error message. 
catch(PDOException $e) { echo $e->getMessage(); } 
// No. of adjacent pages shown on each side 
$adjacents = 2; 
// We will assign variable here for entry By. you can use your variables here. 
$EntryBy = "furqan.aziz"; 
// We Will prepare SQL Query 
$STM = $dbh->prepare("SELECT ServerName FROM statstracker WHERE EntryBy = :EntryBy"); 
// bind paramenters, Named paramenters alaways start with colon(:) 
$STM->bindParam(':EntryBy', $EntryBy); 
// For Executing prepared statement we will use below function 
$STM->execute(); 
// Count no. of records 
$Records = $STM->rowCount(); 
// Your File Name will be the same like your php page name which is index.php 
$targetpage = "index.php"; 
// Below is setting for no. of records per page. 
$limit = 10; 
$page = $_GET['page']; 
if($page) 
//First Item to dipaly on this page 
    $start = ($page - 1) * $limit;   
else 
//if no page variable is given, set start to 0 
    $start = 0;        
// Get data using PDO prepare Query. 
$STM2 = $dbh->prepare("SELECT `SrNo`, `ServerName`, `HiMemUti`, `AvgMemUti`, `HiCpuUti`, `AvgCpuUti`, `HiIOPerSec`, `AvgIOPerSec`, `HiDiskUsage`, `AvgDsikUsage`, `EntryBy` FROM statstracker WHERE EntryBy = :EntryBy ORDER BY SrNo LIMIT $start, $limit"); 
// bind paramenters, Named paramenters alaways start with colon(:) 
$STM2->bindParam(':EntryBy', $EntryBy); 
// For Executing prepared statement we will use below function 
$STM2->execute(); 
// We will fetch records like this and use foreach loop to show multiple Results later in bottom of the page. 
$STMrecords = $STM2->fetchAll(); 
// Setup page variables for display. If no page variable is given, default to 1. 
if ($page == 0) $page = 1; 
//previous page is page - 1     
$prev = $page - 1; 
//next page is page + 1      
$next = $page + 1; 
//lastpage is = total Records/items per page, rounded up.       
$lastpage = ceil($Records/$limit); 
//last page minus 1 
$lpm1 = $lastpage - 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'>Previous</a>"; 
    else 
     $pagination.= "<span class='disabled'>Previous</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?page=$lpm1'>$lpm1</a>"; 
      $pagination.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
     } 
     //in middle; hide some front and some back 
     elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
     { 
      $pagination.= "<a href='$targetpage?page=1'>1</a>"; 
      $pagination.= "<a href='$targetpage?page=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?page=$counter'>$counter</a>";     
      } 
      $pagination.= "..."; 
      $pagination.= "<a href='$targetpage?page=$lpm1'>$lpm1</a>"; 
      $pagination.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
     } 
     //close to end; only hide early pages 
     else 
     { 
      $pagination.= "<a href='$targetpage?page=1'>1</a>"; 
      $pagination.= "<a href='$targetpage?page=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'>Next</a>"; 
    else 
     $pagination.= "<span class='disabled'>Next</span>"; 
    $pagination.= "</div>\n";  
} 
//Below is a start of table in which we will show records using foreach loop. 
echo "<table class='mytableP'>"; 
// For Exporting Records to Excel we will send $EntryBy in link and will gate it on ExportToExcel page for stats for this user. 
echo"<tr><th th colspan=11>Simple Pagination Demo using PDO Queries</div></th></tr>"; 
echo"<a href='ExportToExcel.php?val=$EntryBy' target=_blank><img src='img/e2e.png' alt='Export To Excel' border='' class='e2e' /></a>"; 
echo"<tr><th>Sr#</th><th>Server</th><th>Hi Memory Utilization</th><th>Avg Memory Utilization</th><th>Hi CPU Utilization</th><th>Avg CPU Utilization</th><th>Hi I/O Utilization</th><th>Avg I/O Utilization</th><th>Hi Disk Usage</th><th>Avg Disk Usage</th><th>By</th></tr>"; 
// We use foreach loop here to echo records. 
foreach($STMrecords as $r) 
    { 
     echo "<tr>"; 
     echo "<td>" .$r[0] ."</td>"; 
     echo "<td>" .$r[1] ."</td>"; 
     echo "<td>" .$r[2] ."</td>"; 
     echo "<td>" .$r[3] ."</td>"; 
     echo "<td>" .$r[4] ."</td>"; 
     echo "<td>" .$r[5] ."</td>"; 
     echo "<td>" .$r[6] ."</td>"; 
     echo "<td>" .$r[7] ."</td>"; 
     echo "<td>" .$r[8] ."</td>"; 
     echo "<td>" .$r[9] ."</td>"; 
     echo "<td>" .$r[10] ."</td>"; 
     echo "</tr>"; 
    } 
echo "</table>"; 
// For showing pagination below the table we will echo $pagination here after </table>. For showing above the table we will echo $pagination before <table> 
echo $pagination; 
// Closing MySQL database connection 
$dbh = null; 
?> 
</body> 
</html> 

欲瞭解更多詳情,請訪問網站的源代碼和CSS樣式以下

  1. 點擊here

  2. 點擊here