Einfache Pagination
Seitennummerierung:
Daten aus DatenBank auf mehrere Seiten verteilen, wie geht das?
Beispiel: 30 Einträge in der Datenbank verteilt auf 15 Seiten.
Hier ein ganz einfaches Beispiel:
Daten aus DatenBank auf mehrere Seiten verteilen, wie geht das?
Beispiel: 30 Einträge in der Datenbank verteilt auf 15 Seiten.
Hier ein ganz einfaches Beispiel:
<?php
Einträge per Seite / variabel
$pagseite= 2;
Variablen bestimmen
$page = isset($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 1;
Einträge zählen
$stmt=$msql->prepare("SELECT id FROM a_table");
$stmt->execute();
$allsites=$stmt->num_rows;
$maxpage=$allsites/$pagseite;
$stmt->execute();
$allsites=$stmt->num_rows;
$maxpage=$allsites/$pagseite;
$stmt=$pdo->prepare("SELECT id FROM a_table");
$stmt->execute();
$allsites=$stmt->rowCount();
$maxpage=$allsites/$pagseite;
$stmt->execute();
$allsites=$stmt->rowCount();
$maxpage=$allsites/$pagseite;
Datenbank abfrage
$stmt=$msql->prepare("SELECT spalte1, spalte2
FROM a_table LIMIT ?,?");
$start=($page-1) * $pagseite;
$stmt->bind_param('ii',$start,$pagseite);
$stmt->execute();
$result=$stmt->get_result();
FROM a_table LIMIT ?,?");
$start=($page-1) * $pagseite;
$stmt->bind_param('ii',$start,$pagseite);
$stmt->execute();
$result=$stmt->get_result();
Daten ausgabe
while($row=$result->fetch_assoc())
{
echo $row['spalte1'];
echo $row['spalte2'];
}
{
echo $row['spalte1'];
echo $row['spalte2'];
}
oder gleich als Variablen ausgeben
$stmt=$msql->prepare("SELECT spalte1, spalte2
FROM a_table LIMIT ?,?");
$start=($page-1) * $pagseite;
$stmt->bind_param('ii',$start,$pagseite);
$stmt->bind_result($spalte1, $spalte2);
$stmt->execute();
FROM a_table LIMIT ?,?");
$start=($page-1) * $pagseite;
$stmt->bind_param('ii',$start,$pagseite);
$stmt->bind_result($spalte1, $spalte2);
$stmt->execute();
Daten ausgabe
while($stmt->fetch())
{
echo $spalte1;
echo $spalte2;
}
}
{
echo $spalte1;
echo $spalte2;
}
}
$stmt=$pdo->prepare('SELECT spalte1,spalte2
FROM a_table LIMIT :start,:pagseite');
$start=($page-1) * $pagseite;
$stmt->bindParam(':start',$start,PDO::PARAM_INT);
$stmt->bindParam(':pagseite',$pagseite,PDO::PARAM_INT);
$stmt->execute();
FROM a_table LIMIT :start,:pagseite');
$start=($page-1) * $pagseite;
$stmt->bindParam(':start',$start,PDO::PARAM_INT);
$stmt->bindParam(':pagseite',$pagseite,PDO::PARAM_INT);
$stmt->execute();
Daten ausgabe
while($row=$stmt->fetch())
{
echo $row['spalte1'];
echo $row['spalte2'];
}
{
echo $row['spalte1'];
echo $row['spalte2'];
}
oder gleich als Variablen ausgeben
$stmt=$pdo->prepare('
SELECT spalte1,spalte2
FROM a_table LIMIT :start,:pagseite');
$start=($page-1) * $pagseite;
$stmt->bindParam(1,$start, PDO::PARAM_INT);
$stmt->bindParam(2,$pagseite, PDO::PARAM_INT);
$stmt->bindColumn(1,$spalte1);
$stmt->bindColumn(2,$spalte2);
$stmt->execute();
FROM a_table LIMIT :start,:pagseite');
$start=($page-1) * $pagseite;
$stmt->bindParam(1,$start, PDO::PARAM_INT);
$stmt->bindParam(2,$pagseite, PDO::PARAM_INT);
$stmt->bindColumn(1,$spalte1);
$stmt->bindColumn(2,$spalte2);
$stmt->execute();
Daten ausgabe
while ($stmt->fetch())
{
echo $spalte1;
echo $spalte2;
}
{
echo $spalte1;
echo $spalte2;
}
Seitenaufteilung
$START=1;
$this_page=$_SERVER['PHP_SELF'];
$data=range(1,$maxpage);
$num_results=count($data); if(!isset($_GET['page'])||!$page=intval($_GET['page']))
{
$page=1;
}
$special=[];
if(isset($_GET['var1']) && $var1=$_GET['var1'])
{
$special[]="var1=".urlencode($var1);
}
$special=implode("",$special);
$tmp=[];
for($p=1,$i=0;
$i< $num_results;
$p++,$i+=$START)
{
if($page==$p)
{
$tmp[]='<td class="currentpage">'.$p.'</td>
<td class="seite">Seite</td>
<td class="num-cont">
<form>
<input type="number" class="number-input" min="1" max="'.$maxpage.'" name="page" value="'.$p.'">
</form>
</td>
<td class="von">von '.$maxpage.'</td>';
}
else
{
$tmp[]='<td><a href="'.$this_page.'?'.$special.'page='.$p.'">'.$p.'</a></td>';
}
}
for($i=count($tmp)-3;
$i> 1;$i--)
{
if(abs($page-$i-1)> 2)
{
unset($tmp[$i]);
}
}
if(count($tmp)> 1)
{
echo"<table><tr>";
if($page>1)
{
echo'<td><a href="'.$this_page.'?'.$special.'page='.($page-1).'"> < </a></td>';
}
$lastlink=0;
foreach($tmp as $i=> $link)
{
if($i> $lastlink+1)
{
echo'<td class="dots"> <div class="inf_txt">Sprung zu Seite</div>
<div class="info_text">Seitenzahl eingeben,Bestätigen.</div>
<form>>
<input type="number" placeholder="..." class="numbi" min="1" max="'.$maxpage.'" name="page" value="...">
</form>
</td>';
}
echo $link;
$lastlink=$i;
}
if($page<=$lastlink)
{
echo'<td><a href="'.$this_page.'?'.$special.'page='.($page+1).'"> < </a></td>';
}
echo'</tr></table>';
}
$this_page=$_SERVER['PHP_SELF'];
$data=range(1,$maxpage);
$num_results=count($data); if(!isset($_GET['page'])||!$page=intval($_GET['page']))
{
$page=1;
}
$special=[];
if(isset($_GET['var1']) && $var1=$_GET['var1'])
{
$special[]="var1=".urlencode($var1);
}
$special=implode("",$special);
$tmp=[];
for($p=1,$i=0;
$i< $num_results;
$p++,$i+=$START)
{
if($page==$p)
{
$tmp[]='<td class="currentpage">'.$p.'</td>
<td class="seite">Seite</td>
<td class="num-cont">
<form>
<input type="number" class="number-input" min="1" max="'.$maxpage.'" name="page" value="'.$p.'">
</form>
</td>
<td class="von">von '.$maxpage.'</td>';
}
else
{
$tmp[]='<td><a href="'.$this_page.'?'.$special.'page='.$p.'">'.$p.'</a></td>';
}
}
for($i=count($tmp)-3;
$i> 1;$i--)
{
if(abs($page-$i-1)> 2)
{
unset($tmp[$i]);
}
}
if(count($tmp)> 1)
{
echo"<table><tr>";
if($page>1)
{
echo'<td><a href="'.$this_page.'?'.$special.'page='.($page-1).'"> < </a></td>';
}
$lastlink=0;
foreach($tmp as $i=> $link)
{
if($i> $lastlink+1)
{
echo'<td class="dots"> <div class="inf_txt">Sprung zu Seite</div>
<div class="info_text">Seitenzahl eingeben,Bestätigen.</div>
<form>>
<input type="number" placeholder="..." class="numbi" min="1" max="'.$maxpage.'" name="page" value="...">
</form>
</td>';
}
echo $link;
$lastlink=$i;
}
if($page<=$lastlink)
{
echo'<td><a href="'.$this_page.'?'.$special.'page='.($page+1).'"> < </a></td>';
}
echo'</tr></table>';
}
?>
Eignet sich für viele Seitenaufteilungen.
Verkürzte Darstellung: ohne Formatierung,
kann etwa so aussehen:
Verkürzte Darstellung: ohne Formatierung,
kann etwa so aussehen: