Gå til innhold

Paging UTEN LIMIT


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Ernie
Lenke til kommentar
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

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
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 :roll:

 

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 av Ernie
Lenke til kommentar

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

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 :wallbash: 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 av Ernie
Lenke til kommentar

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 av luser32
Lenke til kommentar

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 av Ernie
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...