Gjest Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Hei! Har kodet verdens enkleste gjestebok script Jeg har satt den til å printe ut maks 8 poster. Men jeg vil ha slik nederst: "Side: 1, 2, 3" osv.. Hvordan kan jeg få til dette? Scriptet: $result = mysql_query("SELECT navn, email, kommentar FROM gjestebok ORDER BY id LIMIT 8",$con); while ($myrow = mysql_fetch_array($result)) { echo "<b>navn:</b> $myrow[0]<br> <b>email: </b>$myrow[1]<br> <b>post:</b> $myrow[2]<br><br>"; } Lenke til kommentar
Inaktivbruker_101125 Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Tenker meg at du kan lage en liste over ID-er som blir hentet ut fra databasen (si, du velger å ta ut de første åtte ID-ene) så holder du styr på hvilke kommentarer du henter ut via en variabel, og når den har hentet ut åtte, så kan du føre over variabelens verdi på hvor langt du har kommet i uthentingen til neste side ved hjelp av POST, GET eller sessions. Litt vanskelig å forklare, men det funker vel muligens... Lenke til kommentar
Gjest Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Takk for svar, men siden jeg ikke har veldig stor peiling på PHP / MySQL så driver jeg basic. Noen som kan hjelpe meg å få opp et enkelt GET script? Slik at URL'en blir slik: gjestebok.php?innlegg=0-8 (Her viser den innlegg fra 0-8 ) eller noe i den duren? Lenke til kommentar
Inaktivbruker_101125 Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Du må bruke ID-er til gjestebokinnlegga i mysql databasen, og du kan gjøre det veldig enkelt slik: $id = $_GET['innlegg']; mysql_query("SELECT * FROM gjestebok WHERE id='$id'"); Så kjører du den gjennom mysql_fetch_array og resten vet jeg at du kan. Si i fra hvis det er noe du ikke forstår. Lenke til kommentar
Gjest Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Jeg skal ikke vise ett og ett innlegg The Prophet Jeg tenkte mere på slik at jeg har maks 8 innlegg på side slik det er i MySQL-spørringen. Og så hvis det er flere enn 8 innlegg i hele tabellen blir de bare flyttet til neste side slik at det blir: "Side: 1, 2, 3" osv.. Lenke til kommentar
Jonas Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Du må bruke ID-er til gjestebokinnlegga i mysql databasen, og du kan gjøre det veldig enkelt slik: Man bruker naturligvis LIMIT til dette, ikke IDer. Dette er fordi IDer ikke nødvendigvis er etterfølgende tall. For alt man vet, så kan 0-8 returnere null rader, fordi første starter ved f.eks. 9. Lenke til kommentar
Inaktivbruker_101125 Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Ja, det er jo sant ColdIce: jeg forstår nå, kan ta det opp senere Lenke til kommentar
Gjest Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Du må bruke ID-er til gjestebokinnlegga i mysql databasen, og du kan gjøre det veldig enkelt slik: Man bruker naturligvis LIMIT til dette, ikke IDer. Dette er fordi IDer ikke nødvendigvis er etterfølgende tall. For alt man vet, så kan 0-8 returnere null rader, fordi første starter ved f.eks. 9. Hei! Jeg har LIMIT på 8. Så den kan ikke vise mere en 8 innlegg, men jeg vil også få til slik at det blir neste side osv Nå går det bare 8 på den ene siden jeg har Lenke til kommentar
OIS Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Hei! Jeg har LIMIT på 8. Så den kan ikke vise mere en 8 innlegg, men jeg vil også få til slik at det blir neste side osv Nå går det bare 8 på den ene siden jeg har "limit $offset, $antall" er mer mysql løsning "limit $antall offset $offset" er den mer portable løsningen. $offset = $side * $antall; //der $side starter på 0 for første side Lenke til kommentar
Gjest Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Takk M4rtin men jeg fikk det ikke til å virke =( Lenke til kommentar
Wackamole Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 Da må du nesten gi oss noe og tygge på (kode) - slik at vi har et utgangspunkt og hjelpe deg med. Hva var det du ikke fikk til med Sampson tutorialen? Lenke til kommentar
Gjest Skrevet 12. mai 2009 Del Skrevet 12. mai 2009 (endret) Ok her har dere koden min Denne koden viser alle innleggene: <?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/admin23/dbconnect23.php'); mysql_select_db($dbname, $con); echo " <a href='index.php?page=add-comment'>Klikk her for å legge igjen en melding!</a><br><br>"; echo " <b>Kommentarer</b><hr>"; $id = $_GET['innlegg']; $result = mysql_query("SELECT * FROM guestbook ORDER BY id LIMIT 8",$con); while ($myrow = mysql_fetch_array($result)) { echo "<b>ID:</b> <a href='index.php?page=guestbook2&innlegg=$myrow[0]'>$myrow[0]</a> <br> <br /> <b> " ?><? echo $lang['gjestebok_navn2']; ?> <? echo "</b> $myrow[1] <br> <b> " ?><? echo $lang['gjestebok_email2']; ?> <? echo "</b>$myrow[2] <br> <b> " ?><? echo $lang['gjestebok_kommentar2']; ?> <? echo "</b> $myrow[3]<br /> --------<br /> "; } ?> EDIT: Glemte ] ved slutten EDIT 2: Så det jeg ønsker å gjøre er å lage et system som setter maks 8 innlegg per side, men det har jeg gjort her: $result = mysql_query("SELECT * FROM guestbook ORDER BY id LIMIT 8",$con); Så når det er maks 8 visninger per side ønsker jeg å vise 8 nye på neste side. Skjønner? Endret 12. mai 2009 av Gjest Lenke til kommentar
OIS Skrevet 13. mai 2009 Del Skrevet 13. mai 2009 (endret) Så det jeg ønsker å gjøre er å lage et system som setter maks 8 innlegg per side, men det har jeg gjort her: $result = mysql_query("SELECT * FROM guestbook ORDER BY id LIMIT 8",$con); Så når det er maks 8 visninger per side ønsker jeg å vise 8 nye på neste side. Skjønner? Du kan kanskje lese denne posten. Endret 13. mai 2009 av OIS Lenke til kommentar
Wackamole Skrevet 13. mai 2009 Del Skrevet 13. mai 2009 (endret) Siden M4artin linket til er en side med mange veldig gode tutorials fra en som heter <etellerannet>Sampson. - Den videon som M4artin linket til, er en video spessifisert til Pagination, noe som er en betegnelse på og få slike "Fram og tilbake knapper". - Hvis du følger videoen, og hører på hva han fyren i videoen sier, så får du det til meget godt! EDIT: Dæven hn leif sku vær innom idag (sry dialekten å sms språket ) Endret 13. mai 2009 av Famen Lenke til kommentar
Ernie Skrevet 13. mai 2009 Del Skrevet 13. mai 2009 Hei! Jeg har LIMIT på 8. Så den kan ikke vise mere en 8 innlegg, men jeg vil også få til slik at det blir neste side osv Nå går det bare 8 på den ene siden jeg har "limit $offset, $antall" er mer mysql løsning "limit $antall offset $offset" er den mer portable løsningen. $offset = $side * $antall; //der $side starter på 0 for første side Hvordan kan du hevde at «limit $antall offset $offset» er mer portabel? Såvidt jeg veit er ikke akkurat de metodene i MySQL for limit særlig portable. Ikke at jeg har noen god oversikt, men PostgreSQL er vel eneste databasen som også gjøre det på den måten. Standarden er forøvrig noe slikt: SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY key ASC) AS rownum, columns FROM tablename ) AS foo WHERE rownum > skip AND rownum <= (n+skip) eller slik SELECT... FROM ... WHERE ... ORDER BY ... OFFSET skip ROWS FETCH FIRST n ROWS ONLY og MySQL støtter ingen av delene. Det finnes en 3. metode med cursors, men MySQL støtter såklart heller ikke den metoden. Så portabilitet med MySQL i forhold til limit med offset vil jeg si er svært liten uannsett hva man velger. Når det er sagt så er «limit $antall offset $offset» uannsett å foretrekke i og med at den er betydelig enklere å forstå enn «limit $offset, $antall» Lenke til kommentar
OIS Skrevet 13. mai 2009 Del Skrevet 13. mai 2009 Hvordan kan du hevde at «limit $antall offset $offset» er mer portabel? Såvidt jeg veit er ikke akkurat de metodene i MySQL for limit særlig portable. Ikke at jeg har noen god oversikt, men PostgreSQL er vel eneste databasen som også gjøre det på den måten. Når det er sagt så er «limit $antall offset $offset» uannsett å foretrekke i og med at den er betydelig enklere å forstå enn «limit $offset, $antall» Det har du rett i. Eg bruker bare MySQL og PostgreSQL så kode som funker i begge er "portabel" for meg. Burde undersøkt dette nærmere. Det ser ut som den mest portable løsningen er cursors (som ikke funker på MySQL) fulgt av subselect med radindex (som ikke støttes av MySQL eller PostgreSQL). En oversikt. Vet ikke kor oppdatert denne siden er. 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å