2012-12-16 163 views
1

im пытается узнать разбиение на страницы с помощью PHP/PDO.Pagination in 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++; 
      } 

Im не зная, что делать дальше, хотя, есть кто-нибудь хорошая отправная точка можно ссылаться из, или может объяснить этот процесс для меня?

Благодаря

+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

Спасибо @Your Common Sense, как бы я добавил следующие кнопки? – Liam

+2

Итак, нет информации о следующей кнопке или фактических номерах страниц? –

0

Пожалуйста, используйте код ниже для PAGINATION с помощью 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!