4588pkdkrikue5c Skrevet 17. desember 2009 Rapporter Del Skrevet 17. desember 2009 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
Jonas Skrevet 17. desember 2009 Rapporter Del Skrevet 17. desember 2009 (endret) 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 17. desember 2009 av Jonas Lenke til kommentar
Ernie Skrevet 17. desember 2009 Rapporter Del Skrevet 17. desember 2009 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? Dessuten går det helt fint å bruk LIMIT n SKIP offset i MySQL. Lenke til kommentar
Jonas Skrevet 17. desember 2009 Rapporter Del Skrevet 17. desember 2009 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
Ernie Skrevet 17. desember 2009 Rapporter Del Skrevet 17. desember 2009 Ups, skrev feil, mente LIMIT n OFFSET skip, mao. man trenger ikke å lage en forskjell mellom mysql og postgresql i dette tilfellet. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå