2017-07-11 2 views
0

Ich brauche eine Paginierung basierend auf PHP/Postgres.php postgres SQL Paginierung

Mit dem Code unten kann ich de Datensätze brechen, zeigt aber nur die Seite 1 (Link).

Irgendeine Idee, das zu beheben?

if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * 5; 
$query = pg_query($dbconn,"select * from my table limit 5 offset 0") or die(pg_result_error($dbconn)); 
$total_query = pg_num_rows($query); 
$total_pages = ceil($total_query/5); 

das Abfrageergebnis:

while($row = pg_fetch_assoc($query)){ 
    ... 
} 

für die Paginierung:

for ($i=1; $i<=$total_pages; $i++) { 
      echo "<a href='index.php?page=".$i."' class=\"textPagina\">".$i."</a>&nbsp;&nbsp;"; 
    } 
+1

Sie negatives Feedback zu Fragen geben kann, aber zumindest etwas Nützliches hinzufügen diese negativen Fragen, damit sie sich nicht wiederholen, wäre es hilfreicher! –

Antwort

2

Ich verstehe nicht, Ihren Code sehr gut, aber die grundlegende Logik für eine Abfrage Paginierung SQL ist

Select * from pages limit $page_size offset $page_size*($page_no-1); 
+0

ich sehe ... ich werde es überprüfen. Danke. –

+0

Gern geschehen. Bitte akzeptieren Sie die Antwort, wenn Sie zufrieden sind. –

0

Ich habe es behoben.

Der Code:

if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 

$recortds = 10; // change here for records per page 

$start_from = ($page-1) * $records; 

$qry = pg_query($dbconn,"select count(*) as total from table"); 
$row_sql = pg_fetch_row($qry); 
$total_records = $row_sql[0]; 
$total_pages = ceil($total_records/$records); 

$select = pg_query($dbconn,"select * from table limit $records offset $start_from"); 

das Auswahlergebnis:

while($row = pg_fetch_assoc($select)){ 
    echo $row['col1'].' | '.$row['col2'].' | '.$row['col3'].'<br />'; 
} 

die Paginierung Links:

for ($i=1; $i<=$total_pages; $i++) { 
      echo "<a href='index.php?page=".$i."' class='yourclass'>".$i."</a>&nbsp;&nbsp;"; 
}