Paginering
Ik ben op zoek naar een uitleg, tutorial over paginering. Ik heb flink op google gerommeld maar kan niet echt wat vinden (hetgene dat ik vind loop ik mee vast of wil niet werken). Het probleem ligt vooral bij de nummers onderaan de pagina waarmee ik wil navigeren naar de volgende pagina. Als je bijvoorbeeld met een GET form aan het werken bent en met <a href='?'> werkt dan heb ik geen idee wat ik in moet vullen op de plek van het vraagteken. Kan iemand me helpen of doorverwijzen?
Hartstikke bedankt alvast!
Ik join je met deze vraag :D ik ben er namelijk ook zeer benieuwt naar hoe dit nu makkelijk aangepakt kan worden. Vooral met Database opvragen etc.
http://php.about.com/od/phpwithmysql/ss/php_pagination.htm Hier staat bijna alles in wat jij wilt weten.
Alleen dit stukje aan het begin:
Alleen dit stukje aan het begin:
Maar hoe gebruik je dit met bijvoorbeeld een MySQL SELECT van 40 records, waar je er dus maar 10 per pagina wil laten zien?
SELECT * FROM blahblah WHERE blahblah LIMIT paginanummer*10,10
pagina 1 laat zien 1,10
pagina 2 laat zien 2,20
pagina 3 laat zien 3,30
pagina 4 laat zien 4,40
Gewijzigd op 21/05/2012 10:41:05 door Albert de Wit
Daar is een variable voor, verander deze dan naar 10:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
//This is the number of results displayed per page
$page_rows = 10;
// Hij berekent dan hoeveel paginas
$last = ceil($rows/$page_rows);
// Dan maakt mij de limit aan voor mysql
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
//pagina 1 wordt dus limit 0, 10 en pagina 2 limit 10, 20 enz enz
?>
//This is the number of results displayed per page
$page_rows = 10;
// Hij berekent dan hoeveel paginas
$last = ceil($rows/$page_rows);
// Dan maakt mij de limit aan voor mysql
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
//pagina 1 wordt dus limit 0, 10 en pagina 2 limit 10, 20 enz enz
?>
<a href='index.php?page=home'></a>
<a href='index.php?page=nieuws'></a>
<a href='index.php?page=contact'></a>
Vervolgens haal je met een PHP script de GET variabele op. In dit geval is dat:
Wanneer je dus op een link geklikt hebt wordt .php toegevoegd aan je GET variabele.
Hoop dat dit is wat je bedoeld.
Mijn excuss voor het typotje :-D, dank je ik zal het eens gaan proberen. Wat me dan nog niet duidelijk is.
De query selecteerd 40 records, met de code van jou deel ik ze op in delen van 10 records. Echter hoe zet ik nu de volgende 10 op pagina 2, etc?
Als ik bijvoorbeeld een link van de 4de naar de eerste pagina wil dan ?????
<a href='index.php?entoen?'>Eerste</a>
Toevoeging op 21/05/2012 10:49:42:
Roy sterretje op 21/05/2012 10:45:53:
Als ik het goed begrijp wil je de pagina's oproepen via een GET variabele.
wij doelen meer hierop -> http://www.wehkamp.nl/computer-telecom/ipad-tablets-e-readers/C31_6F0/#&&KW4=&PI=4&SM=5&ML=&KW10=&KW1=&PRmin=0&KW8=&KW5=&PRmax=700&KW3=&MK=&F=1_2_4_17_
Als je naar onderen gaat zie je dat je je op pagina 5 bevind.
Gewijzigd op 21/05/2012 10:50:28 door Albert de Wit
<a href='index.php?var=1&var=2'
Je doet eerst een query om te kijken hoeveel resultaten je hebt, daarna doe je pas de query om de gegevens echt op te halen, en hierin zit de limit verwerkt, waardoor je alleen de X aantal resultaten krijgt per pagina.
Code (php)
1
2
3
4
2
3
4
<?
//$max = "limit 0, 10"; //bijvoorbeeld
$data_p = mysql_query("SELECT * FROM topsites $max");
?>
//$max = "limit 0, 10"; //bijvoorbeeld
$data_p = mysql_query("SELECT * FROM topsites $max");
?>
@Albert
Ik zie hier toch duidelijk paginering staan:
http://php.about.com/od/phpwithmysql/ss/php_pagination_3.htm
Gewijzigd op 21/05/2012 10:50:56 door gerhard l
Roy sterretje op 21/05/2012 10:50:02:
Als je meerdere GET waardes hebt gebruik je een "&"
en hoe doe je dit met checkboxes?
De link die wordt gevormd als je gesubmit hebt is:
http://mijndomein.nl/index.php?var1=een&var2=twee
Dit geldt alleen wanneer beide geselecteerd zijn.
<form>
<input type='checkbox' name='var1' value='een' />
<input type='checkbox' name='var2' value='twee' />
<input type='submit' value='Verzend' />
</form>
ik kom zo even met een voorbeeld, ik hoop dat ik me dan duidelijker kan maken
Albert de Wit op 21/05/2012 10:58:24:
ik kom zo even met een voorbeeld, ik hoop dat ik me dan duidelijker kan maken
Prima
Ik zal eens kijken met het voorbeeldje van About, echter gebruiken ze wel dingen zoals or die, mysql_fetch_array. Ik heb geen idee hoe oud dit is maar als voorbeeld is het wel degelijk iets.
@Albert, checkbox heeft toch ook een name en value veld, dat kun je dan toch gebruiken?
'Or die' en de 'fetch array' hoef je niet te gebruiken, gebruik goede foutafhandeling en bij voorkeur fetch assoc maar de tut ging vooral om de LIMIT en de variablen die je in de href moet zetten, aangezien de TS hierna vroeg.
ik heb een form waarin ik kan kiezen welke talen ik wil hebben (laten we zeggen van boeken)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<form action='index.php' method='GET'>
<input type='check' name='taal[]' value='Nederlands'>Nederlands<br>
<input type='check' name='taal[]' value='Fries'>Fries<br>
<input type='check' name='taal[]' value='Duits'>Duits<br>
<input type='check' name='taal[]' value='Engels'>Engels<br>
<hr>
<select name='zaak'>
<option value='De slegte'>De slegte</option>
<option value='Hema'>Hema</option>
<option value='Aldi'>Aldi</option>
</select>
<input type='submit' name='sorteer' value='Zoek'>
</form>
<input type='check' name='taal[]' value='Nederlands'>Nederlands<br>
<input type='check' name='taal[]' value='Fries'>Fries<br>
<input type='check' name='taal[]' value='Duits'>Duits<br>
<input type='check' name='taal[]' value='Engels'>Engels<br>
<hr>
<select name='zaak'>
<option value='De slegte'>De slegte</option>
<option value='Hema'>Hema</option>
<option value='Aldi'>Aldi</option>
</select>
<input type='submit' name='sorteer' value='Zoek'>
</form>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (isset($_GET['sorteer']))
{
$query .= "SELECT * FROM boeken WHERE titel!='sjhf8oq'";
for ($i=0;count($_GET['taal[]']);$i++)
{
$query .= "AND (taal='ybf8b38'";
if (isset($_GET['taal'][$i]))
{
$query .= " || taal='".$_GET['taal'][$i]."'";
}
$query .= ")";
}
$query .= " AND zaak='".$_GET['zaak']."'";
// stel: 30 resultaten met 10 resultaten per pagina... wat nu?
}
?>
if (isset($_GET['sorteer']))
{
$query .= "SELECT * FROM boeken WHERE titel!='sjhf8oq'";
for ($i=0;count($_GET['taal[]']);$i++)
{
$query .= "AND (taal='ybf8b38'";
if (isset($_GET['taal'][$i]))
{
$query .= " || taal='".$_GET['taal'][$i]."'";
}
$query .= ")";
}
$query .= " AND zaak='".$_GET['zaak']."'";
// stel: 30 resultaten met 10 resultaten per pagina... wat nu?
}
?>
Gerhard l op 21/05/2012 10:50:17:
@Chris
Je doet eerst een query om te kijken hoeveel resultaten je hebt, daarna doe je pas de query om de gegevens echt op te halen, en hierin zit de limit verwerkt, waardoor je alleen de X aantal resultaten krijgt per pagina.
Je doet eerst een query om te kijken hoeveel resultaten je hebt, daarna doe je pas de query om de gegevens echt op te halen, en hierin zit de limit verwerkt, waardoor je alleen de X aantal resultaten krijgt per pagina.
Waarom zou je eerst een query doen om het totaal aantal op te halen? Als je met pagina's werkt kan je altijd gewoon direct de query draaien om de pagina's op te halen. Zelfs als de pagina te hoog is, je krijgt dan gewoon 0 records terug (waardoor je dus ook weet dat je te ver was). Het totaal aantal records kan je laten uitrekenen, in dezelfde query, met de functie SQL_CALC_FOUND_ROWS en vervolgens met de query SELECT FOUND_ROWS() uitlezen.
Is pagination niet bedoeld dat alles binnen 1 fysieke pagina blijft en dan aan de hand van GET waarde in de zelfde pagina pag 2 etc print?
Dus bijvoorbeeld 40 records uit een query verdeeld over 4 pagina's. En met pagina.php?p=1 naar pagina 1 pagina.php?p=2 naar pagina 2, etc.
Of zit ik er nu naast?
Zo zou ik het inderdaad omschrijven ja.