Voor een project op school moet ik een zoekmachine maken met daarin alle leerlingen.
Het syteem moet na het uitvoeren van de query om de leerlingen op te halen de leerlingen willekeurig met 10 leerlingen per pagina weergeven.
Een leerling mag niet steeds op de eerste pagina weergeven worden hiervoor gebruik ik de mysql functie ORDER BY RAND() maar dan weergeeft hij dezelfde leerling op meerdere pagina's
Je doet hetzelfde als een standaard pagination systeem alleen ga je niet elke keer een query uitvoeren maar weergeef je ze op basis van de array key in combinatie met de $_GET die je daar voor nodig hebt.
Zorg er voor dat RAND() niet iedere keer opnieuw een random sortering aanmaakt. Hiervoor kun je een seed gebruiken, een getal die je als parameter opgeeft in RAND(). Zolang je dezelfde parameter opgeeft, zul je dezelfde sortering krijgen. Zet deze seed in een sessie of in de url, lees deze uit en zet hem in de RAND(). Ongeacht de pagina (de LIMIT en de OFFSET) zul je altijd zelfde sortering krijgen.
if(empty($_GET['page']) || !ctype_digit($_GET['page'])){
$offset = ($_GET['page'] - 1) * 10; // 10 is het aantal resultaten per pagina, zie ook de LIMIT
}
else {
$offset = 0;
}
$query = "
SELECT
*
FROM
tabelnaam
ORDER BY
RAND(".$seed.")
LIMIT 10
OFFSET ".$offset;
// uitvoeren query, etc. etc.
// NIET VERGETEN OM $seed in je urls te zetten! Evenals het paginanummer
?>