Hallo,

ik wil graag dat hij 10 restulaten op een pagina uit leest.
of 15 in iedergeval dat ik dat kan aan passen.
dus dat je zo iets heb:

result 1
result 2
result 3
result 4
result 5
<- 1-2-3 ->

even makkelijk gezegt,
hoe kan ik dit het beste doen?
Alvast bedankt.

Greets Mitch
ORDER BY id DESC LIMIT 0, 10

Dan laat je de eerste 10 resultaten zien

Ok,
ik ben aan het kijken hoe ik dit moet doen.
tot nu to heb ik het volgende:

Maar er is een probleem.
bij pagina 0 leest hij er 2 uit
bij pagina 1 leest hij er 4 uit
bij pagina 2 leest hij er 6 uit

wat doe ik verkeerd? xD


<?php
$limitpage = 2;

$sql2 = "SELECT * FROM logboek";
$query2 = mysql_query($sql2) or die (mysql_error ());
$num_rows = mysql_num_rows($query2);

if(!isset($_GET['page'])){
	$page = 0;
	$_GET['page'] = 0;
}else{
	$page = $_GET['page'];
}

$limit = $page * $limitpage;
$limit2 = $limit + $limitpage;

$sql = "SELECT * FROM logboek ORDER BY id DESC LIMIT $limit, $limit2";
$query = mysql_query($sql) or die (mysql_error ());
if(mysql_num_rows($query) == 0){
	echo 'Geen log bestanden in het logboek.<br>';
}else{
	echo '<table width="100%">
	<tr><td style=" border-width: 0px 0px 1px 0px; border-style: none none dashed none;">Datum</td><td style=" border-width: 0px 0px 1px 0px; border-style: none none dashed none;">Omschrijving</td><td style=" border-width: 0px 0px 1px 0px; border-style: none none dashed none;">IP</td></tr>';
	while($row = mysql_fetch_assoc($query)){
		echo '<tr><td style=" border-width: 0px 0px 1px 0px; border-style: none none dashed none;">'.$row['datum'].'</td><td style=" border-width: 0px 0px 1px 0px; border-style: none none dashed none;">'.$row['omschrijving'].'</td><td style=" border-width: 0px 0px 1px 0px; border-style: none none dashed none;">'.$row['ip'].'</td></tr>';
		}
	echo '</table>';
}
echo '<center>';
$backpage = $_GET['page'] - 1;
if(!$_GET['page'] <= 0){
echo ' <a href="?page='.$backpage.'"><<</a> ';
}
$page2 = $num_rows  / $limitpage;
$page2 = $page2 - 1;
$page3 = $num_rows  / $limitpage - 2;
for ( $counter = 0; $counter <= floor($page2); $counter += 1) {

if($_GET['page'] == $counter){
echo ' <a href="?page='.$counter.'"><u><b>'.$counter.'</b></u></a> ';
}else{
echo ' <a href="?page='.$counter.'">'.$counter.'</a> ';	
}
}
$nextpage = $_GET['page'] + 1;
if($_GET['page']  <= floor($page3)){
echo ' <a href="?page='.$nextpage.'"> >> </a> ';
}
echo '</center>';
echo '<br><br>berekening limit: '.$page.' x '.$limitpage.' = '.$limit.'<br>';
echo 'berekening limit2: '.$limit.' + '.$limitpage.' = '.$limit2.'<br>';
echo $sql;
?>
Probeer eens in plaats van
<?php
$limit = $page * $limitpage;
?>
dit te gebruiken
<?php
$limit = ($page - 1) * $limitpage;
?>

Ook klopt
<?php
$limit2 = $limit + $limitpage;
?>
volgens mij niet helemaal. Daardoor gaat ie op elke pagina steeds meer weergeven omdat hij het pagina nummer + de hoeveelheid per pagina gaat weergeven.

Sidenote: Ben zelf ook een beginner met PHP dus wat ik hier zeg kan compleet verkeerd zijn..if so: excuses daarvoor!

Edit:
Zie dat je $limit2 nog verderop in je script gebruikt, dus zonder dat om te gooien is het 't makkelijkst denk ik om je $sql te veranderen in
<?php
$sql = "SELECT * FROM logboek ORDER BY id DESC LIMIT $limit, $limitpage";
?>
$limitpage is dan uiteindelijk de hoeveelheid die je op 1 pagina wilt laten weergeven natuurlijk.
Maar het rare is...
als ik naar pagina 1 ga dan leest hij er 4 uit, en de SQL =
SELECT * FROM logboek ORDER BY id DESC LIMIT 2, 4

Dat is toch raar? xD :P


Dankje santhe, maar ik wil graag mijn script werkend krijgen :)
heb je ergens live voorbeeld?
Ik heb het al.

De sql moet zo:

$sql = "SELECT * FROM logboek ORDER BY id DESC LIMIT $limit, $limitpage";

Greets Mitch :D
Heb je zelf al eens gekeken naar wat er met je query gebeurd?
Snap je zelf het principe van die limit?
Je ziet dat, wanneer de achterste cijfer wordt opgehoogd, die hoeveelheid berichten ook worden weergeven.

LIMIT <nummer1>, <nummer2>

Met andere woorden.
Je hebt een limit van 2 items per overzicht (voorbeeld).
Wat je wilt hebben is dat hij op pagina 3 enkel laat zien, de 2 items
Dus je moet de pagina * de limit doen.
Dan heb je het startpunt <nummer1>.
nummer2 is zeg maar de hoeveelheid wanneer hij weer moet stoppen.
Dus als jij zegt 4,6 zal hij starten bij 4 en 6 items laten zien.

Ps. Stel ik heb het verkeerd uitgelegd, corrigeer me dan aub :-) ben ook maar een mens ^^
gaat helemaal goed zo alleen had ik het zelf geloof ik anders gedaan.
Vertel:)

Reageren