30 treads per pagina (vorige volgende)

Status
Niet open voor verdere reacties.

Barry_127

Gebruiker
Lid geworden
20 jan 2003
Berichten
478
hoe maak ik in mijn gastenboek een systeem dat hij in het begin maar 30 treads worden geshowd en als er bijvoorbeeld in totaal 70 treads zijn dat hij dan nog een link naar pagina 2 en 3 neerzet (waar alleen de LIMIT in de SQL dus verschilt).

En er moet natuurlijk geen link naar pagina 4 komen want dit levert tog geenresultaat...

kan iemand mij vertellen hoe ik dit moet maken met een duidelijke uitleg zodat ik het ook in andere projecten kan toepassen?"

alvast bedankt :D
 
PHP:
$aantal_berichten = 70; // Dit moet je dus met een query ophalen

$pagina = 0;
$aantal_per_pagina = 10;
  if(isset($_GET["aantal"]) == TRUE)
  {
    if(((int) $_GET["aantal"]) > 0)
    {
    $aantal_per_pagina = ((int) $_GET["aantal"]);
    }
  }

$aantal_paginas = ceil($aantal_berichten / $aantal_per_pagina);

  if(isset($_GET["pagina"]) == TRUE)
  {
    if(((int) $_GET["pagina"]) < $aantal_paginas)
    {
    $pagina = ((int) $_GET["pagina"]);
    }
  }

$query = "SELECT * FROM gastenboek LIMIT " . ($pagina * $aantal_per_pagina) . "," . $aantal_per_pagina . " DESC"; // DESC omdat ik ervanuit ga dat de nieuwste berichten bovenaan komen
Zoiets ... :)

Succes :thumb:
 
ik kan het script ongeveer volgen maar niet helemaal :(

zou je er nog een beetje uitleg bij willen posten (ik ken bijvoorbeeld de functie ceil niet)

maar bedankt zover :D
 
Eerst haal je het totale aantal berichten in 't gastenboek op.
De standaard weergegeven pagina is de eerste pagina, 0, met standaard 10 berichten per pagina.
Als er in de adresbalk een ander aantal is opgegeven, en wordt de standaard veranderd aan dat aantal berichten per pagina (op voorwaarde dat wat in de adresbalk staat groter dan 0 is).
Vervolgens bereken je het aantal pagina's.
Als je bijv. 75 berichten hebt met 10 berichten per pagina, dan heb je 8 pagina's: 7 pagina's met 10 berichten (70) en op de 8e pagina het overige (5).
75 / 10 = 7,5. Ceil(), zoals je in de handleiding had kunnen lezen (:rolleyes:), rond een getal af naar boven. 7,5 wordt 8, het aantal pagina's :)
Vervolgens check je of er een pagina in de adresbalk is opgegeven. Zo ja, dan wordt er gecheckt of dit getal kleiner is dan het totaal aantal pagina's. Zo ja, dan krijgt de variabele $pagina de waarde van wat er in de adresbalk staat.
Vervolgens voer je een query uit waarin je de berichten ophaalt. Zit je bijv. op de 2e pagina met 10 berichten per pagina, dan staat er in de adresbalk '&pagina=1'. Met 10 berichten per pagina moet je dus beginnen bij de 10e rij in de database (de eerste 10 horen tenslotte bij de 1e pagina). Vandaar dat is $pagina * $aantal_per_pagina doe, 1 * 10 = 10, vanaf de 10e rij dus.
Vanaf deze 10e rij wil je $aantal_per_pagina rijen ophalen, wat je ook opgeeft in de query :)
Enige wat je d'r zelf nog ff bij moet doen is een ORDER BY datum DESC ofzo ;)

Succes :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan