Pagination maken

Status
Niet open voor verdere reacties.

tsedney

Gebruiker
Lid geworden
2 jun 2008
Berichten
42
Hoi Luitjes,

Ik probeer een pagination te maken. Het is de bedoeling dat er 4 regels per keer worden getoond. Dit werkt echter niet en hij drukt de hele database af. Ook het navigeren lukt mij niet helemaal.

Hellup! Thanks!

Hier de code

PHP:
<?php

mysql_connect ("localhost", "root") or die (mysql_error ());
mysql_select_db("gastenboek") or die (mysql_error());

$result = mysql_query("SELECT * FROM boek");

?>

<html>
<head>
<title> Tamara's Gastenboek </title>
</head>
<body>
<table border="1" width="80%" align="center">
<tr>
<td colspan="4"><h2 align="center"> Tamara's Gastenboek</h2></td> 
</tr>
<tr>
<th>Naam</th>
<th>E-mail</th>
<th>Bericht</th>
</tr>
<?php while ($rij = mysql_fetch_array($result)){
echo ("<tr><td> " . $rij["naam"] . "</td> " .
" <td>  " . $rij ["email"] . " </td> " .
" <td> " . $rij ["bericht"] . " </td></tr>\n");
}

?>
</table>
<hr>
</body>
</html>

<?php
if (!(isset($pagenum)))
{
	$pagenum = 1;
} 
$data = mysql_query("SELECT * FROM boek") or die (mysql_error());
$rows = mysql_num_rows($data);

$page_rows = 4;
$last = ceil($rows/$page_rows);

if ($pagenum < 1)
{
	$pagenum = 1;
}
elseif ($pagenum > $last)
{
	$pagenum = $last;
}

$max = 'limit ' .($pagenum - 1) * $page_rows .', ' .$page_rows;
$data_p = mysql_query("SELECT * FROM boek $max") or die (mysql_error());
while($info = mysql_fetch_array ( $data_p )) ;
{
	Print $info['naam'];
	echo "<br>";
}

echo "<p>";

echo " --Page $pagenum of $last --<p>";
if ($pagenum == 1)
{
}
else 
{
	echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
	echo " ";
	$previous = $pagenum-1;
	echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'><-Previous</a>";
}

echo " --- ";

if ($pagenum == $last)
{
}
else {
	$next = $pagenum+1;
	
	
echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -> </a>";
echo " ";
echo "<a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a>";
}




?>
 
Pagination werkt heel anders dan je nu hebt in ieder geval.

2 beginsituaties mogelijk:

- Een waarbij de URL gewoon aangeroepen wordt (i.e. view.php)
- Een waarbij de URL + query string wordt aangeroepen (i.e. view.php?page=3[dir=asc/desc])


Je moet wat configuratie doen:

- Aantal items per pagina;
- Maximaal aantal items (SQL -> COUNT).

Vervolgens voer je een query uit met een LIMIT, en krijg je alleen de resultaten die beginnen met item X, en eindigen bij Y.

Voorbeeld:

10 items per pagina, pagina = 3.

3 * 10 = 30. 30 - 10 = 20, dus gebruik je LIMIT 21, 30. Zo krijg je alleen die resultaten, en hoef je het niet in PHP af te handelen.
 
Ik dacht dat de syntax voor LIMIT als volgt was:
SELECT ....... LIMIT beginwaarde, aantal
waarbij er geteld wordt vanaf beginwaarde 0

3de pagina tonen met 10 items per pagina, wordt dan:
SELECT ....... LIMIT 20,10
 
Volgens mij heb je een extra configuratie nodig namelijk waar je wil beginnen.

PHP:
$start = (isset($_GET['num']) && ctype_digit($_GET['num']) && ($_GET['num'] > 0)) ? $_GET['num'] : 0;
$perPage = 10;

$query = "SELECT * FROM tabel LIMIT ". $start .", ". $perPage;
Dit lijkt mij een aardig begin.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan