luser32 Skrevet 6. februar 2006 Del Skrevet 6. februar 2006 Har laget et galleri, med paging ved hjelp av LIMIT under kategorivisning. Men når jeg viser et og et bilde, så vil jeg gjerne bruke $_GET['bilde_id'] til å finne ut hvilket bilde som skal vises. Dette funker fint, men da ble det værre med paging:( Er det noen som vet hvordan man kan finne neste auto_increment id og forrige auto_increment id? Takker:) Lenke til kommentar
Torbjørn Skrevet 6. februar 2006 Del Skrevet 6. februar 2006 select from table where id>=$id limit 2 -- for å finne neste bilde.. omvendt for forige bilde kanskje? Lenke til kommentar
luser32 Skrevet 7. februar 2006 Forfatter Del Skrevet 7. februar 2006 Ja, kanskje det:) Tester det nå Lenke til kommentar
luser32 Skrevet 7. februar 2006 Forfatter Del Skrevet 7. februar 2006 Det funker ihvertfall fint med $neste, skal prøve å fikse $forrige også Lenke til kommentar
Ernie Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 (endret) Her har du et ganske pent problem. Det er så absolutt mulig å løse det, men ikke uten limit og id'en i db kan ikke være den samme som den du får inn i scriptet. SELECT * FROM tabell LIMIT $tall - 1, 1 Neste blir $tall + 1 og forige blir $tall - 1. Eneste løsningen jeg kan komme på. Edit: Forutsetter at $tall er mellom 1 og antall rader. Endret 7. februar 2006 av Ernie Lenke til kommentar
luser32 Skrevet 7. februar 2006 Forfatter Del Skrevet 7. februar 2006 Kom frem til dette jeg også Men skjønner ikke hvordan jeg skal finne $tall(om du mener at $tall = radens tall(ikke id)) Fant mysql_data-seek, men klarte ikke helt å få det til. Og jeg mente egentlig uten LIMIT fra $_GET Lenke til kommentar
Ernie Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Kom frem til dette jeg også Men skjønner ikke hvordan jeg skal finne $tall(om du mener at $tall = radens tall(ikke id)) Fant mysql_data-seek, men klarte ikke helt å få det til. Og jeg mente egentlig uten LIMIT fra $_GET 5569364[/snapback] vel i stedet for $tall bruker du $_GET['bilde_id'] Lenke til kommentar
luser32 Skrevet 9. februar 2006 Forfatter Del Skrevet 9. februar 2006 Id'en til bildet har jo ingenting med LIMIT å gjøre. Det er jo mange bilder som er lagt til i forskjellige kategorier og som har id'er om hverandre. Lenke til kommentar
luser32 Skrevet 9. februar 2006 Forfatter Del Skrevet 9. februar 2006 Fikk det til med do-while:) do { $test_id = $id - 1; $result = mysql_query("SELECT id FROM galleri_bilder WHERE galleri_id = $galleri_id AND id = $test_id ",$dbc); $all_row = mysql_fetch_array($result); if ($result) { $forrige = true; $prev_id = $all_row[0]; break; } } while (!$result); Lenke til kommentar
Torbjørn Skrevet 9. februar 2006 Del Skrevet 9. februar 2006 den der holder ikke. det er ikke gitt at du har id'er i numerisk rekkefølge uten huller. Lenke til kommentar
luser32 Skrevet 9. februar 2006 Forfatter Del Skrevet 9. februar 2006 Nå er det første gang jeg bruker do-while:P Men den skal jo gå helt til $result går bra, og om id ikke stemmer overens med galleri_id, skal den jo 'hoppe' over hullene i tabellen. Trodde jeg:) Lenke til kommentar
Ernie Skrevet 9. februar 2006 Del Skrevet 9. februar 2006 (endret) Nå er det første gang jeg bruker do-while:P Men den skal jo gå helt til $result går bra, og om id ikke stemmer overens med galleri_id, skal den jo 'hoppe' over hullene i tabellen. Trodde jeg:) 5578133[/snapback] Min løsning gjør det automatisk da Edit: Den koden hopper jeg ikke over noe da :s Den bare går i loop og forsøker på den ene raden som kanskje kanskje-ikke finnes. Endret 9. februar 2006 av Ernie Lenke til kommentar
luser32 Skrevet 9. februar 2006 Forfatter Del Skrevet 9. februar 2006 Hmm:S Det var jo surt... Ikke helt stødig på do-while enda:/ Men hvordan skal det gjøres da? Hadde tenkt at den skulle gå i loop helt til $result er true, men gå videre hver gang $result ikke gikk (while !$result ) Lenke til kommentar
Torbjørn Skrevet 9. februar 2006 Del Skrevet 9. februar 2006 ah ok. var litt kjapp på avtrekkeren. men hvorfor ikke velge neste som er lavere istedet? da vil du treffe den på første forsøk. Lenke til kommentar
kakkle Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 Enig med Torbjørn. Det er nok det enkleste. Når det gjelder Do-While løkken, så kunne det fungert det også, men den koden over vil neppe fungere, med mindre du har en post som ligger på id nummeret under $id. $test_id vil ha den samme verdien før hver gang loopen kjøres, $id-1, og siden det ikke gjøres noe med variabelen $id (Som f.eks å minske den med 1), så vil $test_id være det samme. Hvis du vil teste den om den do while løkken kan fungere, så sett $test_id = $id; før Do, og i Do-while løkken satt $test_id = $test_id-1; istedetfor $test_id = $id-1; Men Torbjørns løsning er nok den beste her. Lenke til kommentar
Ernie Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 (endret) Hmm ... kom til å tenke på noe. Forumet her klarer jo det (første / siste knappene). Eneste er at forumet sorteres. Edit: Faen, hvordan kan jeg være så hodeløs Selvsagt, Torbjørn er jo virkelig inne på noe i første innlegg. SELECT * FROM tabell WHERE felt = $id LIMIT 1 Der har vi den som skal vises. Så lager man linkene Neste = fil.php?id=$id&go=next og Forige = fil.php?id=$id&go=previous For å hente ut neste blir spørringen slik: SELECT * FROM tabell WHERE felt > $id LIMIT 1 og forige: SELECT * FROM tabell WHERE felt < $id LIMIT 1 DER har vi løsningen Endret 10. februar 2006 av Ernie Lenke til kommentar
luser32 Skrevet 10. februar 2006 Forfatter Del Skrevet 10. februar 2006 (endret) Den løsningen viste Thorbjørn ja:) Og den funker kjempefint til 'neste', men om man bruker den til 'forrige', så viser den av en elelr annen grunn den første rekken i tabellen:s I test-tabellen min bli det altså alltid id=26, uansett om $current_id = 27 eller 35... Aner ikke hvorfor, men det er sånn MySQL funker:( Hvis det da ikek finnes en kommando for å finne den nærmest $current_id da:P Endret 10. februar 2006 av luser32 Lenke til kommentar
Ernie Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 (endret) Leste du det jeg skrev i siste innlegg? Det skal fungere 100% riktig. switch ($_GET['go']) { case 'next': $result = mysql_query("SELECT id FROM tabell WHERE felt > $id LIMIT 1 ORDER BY id ASC"); $row = mysql_fetch_array($result); header("Location: fil.php?id=".$row['id']); break; case 'previous': $result = mysql_query("SELECT id FROM tabell WHERE felt < $id LIMIT 1 ORDER BY id ASC"); $row = mysql_fetch_array($result); header("Location: fil.php?id=".$row['id']); break; default: //kode for å hente ut bilde med id-en $id } Nå har du til og med kode for det. Edit: La til ORDER BY Edit2: Manglet ASC Endret 13. februar 2006 av Ernie Lenke til kommentar
Torbjørn Skrevet 12. februar 2006 Del Skrevet 12. februar 2006 og forige: SELECT * FROM tabell WHERE felt < $id LIMIT 1 5582063[/snapback] Ta med "ORDER BY id desc" til slutt i spørringen Lenke til kommentar
Ernie Skrevet 12. februar 2006 Del Skrevet 12. februar 2006 og forige: SELECT * FROM tabell WHERE felt < $id LIMIT 1 5582063[/snapback] Ta med "ORDER BY id desc" til slutt i spørringen 5592556[/snapback] Hvorfor det? 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å