Gå til innhold

Berre vise x antall innlegg per side frå mySQL


Anbefalte innlegg

Hei,

Dette er sikkert ikkje noko vanskeleg å gjere, men avogtil set ein seg fast.

Eg lager ei gjestebok, å då tykkjer eg at det held med 5 meldingar per side. Korleis får eg PHP til å kun vise 5 innlegg, for så å skrive ut ei lenkje til neste side kor fleire innlegg visest? Om det ikkje fleire kan denne knappen egentleg berre forsvinne, eller fade vekk. Kan nokon hjelpe meg her? Sikkert utruleg enkelt..

Lenke til kommentar
Videoannonse
Annonse

Pagination krever som regel at du først teller antall innlegg, både for å sjekke om det gitte sidetallet er innenfor rammene og for å vise antall sider.

 

SELECT COUNT(*) FROM guestbook;

Count kan ha en lei tendens til å være ganske treg, avhengig av hva slags database du benytter deg av, og hvis det er et problem, så er det mulig å klare seg uten å først hente ut antallet. Da vil du ikke kunne vise antall sider og scriptet vil ikke entydig kunne bestemme når siste side er nådd. (Facebook har blant annet gått for en slik løsning, men så har de også en helt ekstrem brukermasse da..)

 

Når du skal hente ut en gitt side, så bruker du bare LIMIT, som fungerer tilnærmet likt i de fleste main stream-databaser i hvert fall.

 

<?php

$items_per_page = 20;

$item_count = [fetch number of elements..];
$pages = intval ( ( $item_count - 1 ) / $tems_per_page ) + 1;

$page = array_key_exists ( 'page', $_GET ) ? intval ( $_GET['page'] ) : 0;

if ( $page >= $pages )
	$page = $pages - 1;
elseif ( $page < 0 )
	$page = 0;

$mysql = 'SELECT ... LIMIT ' . $items_per_page * $page . ', ' . $items_per_page;
$postgresql = 'SELECT ... LIMIT ' . $items_per_page . ' OFFSET ' . $items_per_page * $page;

?>

Endret av Jonas
Lenke til kommentar
Et lite problem med den koden: Bør det ikke i linjen «$pages = intval ( ( $item_count - 1 ) / $items ) + 1;» være $items_per_page, og ikke $items?

Jupp.

 

Dessuten går det helt fint å bruk LIMIT n SKIP offset i MySQL.

Foe shoe, stemmer sikkert det. Er ikke kjent med syntax-variasjoner i MySQL.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...