07. december 2005 - 09:41Der er
7 kommentarer og 1 løsning
Find forrige, aktuelle og næste id
Jeg sidder og er ved at lave et lille "galleri" i PHP/MySQL til mine private fotos.
Alle billeder ligger i en tabel hvor image_id er primary key.
Det jeg søger er et sql-kald, der ud fra et givent id finder det "lavere" og "højere" ID såvidt at det findes hvis sql-kaldets where-betingelser opfyldes (se nedenfor - det er afgrænset af dir_id). Meningen med det er, at når man klikker sig ind på et billede, skal man få et thumbnail af forrige og næste billlede i mappen.
Indtil videre har jeg lavet denne løsning:
SELECT i.image_id, i.filename, i.note, u.images_width_small, u.images_width_large FROM images AS i, users AS u WHERE i.user_id = '".$_GET['u_id']."' AND i.image_id <= '".($_GET['image_id']+1)."' AND i.image_id >= '".($_GET['image_id']-1)."' AND u.user_id = i.user_id AND i.dir_id = '".$_GET['dir_id']."'
Den virker også fint for det meste! - Men hvis der er "klumper" i id'erne - fx hvis billederne i mappen med dir_id = 3 har image_id'erne 3, 5 og 7 - så virker det ikke udfra ovenstående eksempel. Så vil den ikke finde billede 3 og 7 selvom de rent faktisk kommer før og efter billede 5 i den mappe som billede 5 ligger i.
Jeg er godt klar over jeg bare kan lave tre sql-kald. Et med =, et med < og limit 1 og et med > og limit 1 - men hvis man kan gøre det i et kald ville det jo være federe! =)
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
eller også kun hente id'er fra hvert dir_id og smide dem i et array, og bruge array_search() til at finde forrige og næste id
Og hvorfor kun en query? Umiddelbart ser det ud som om du f.eks. henter "small-width" og "large_width" men du bruger vel ikke det hele ved samme visning?
Synes godt om
Slettet bruger
09. december 2005 - 15:25#3
Et kald kan ikke lade sig gøre. Tre kald er den simple løsning, som du allerede har gennemskuet. Og så er der mulighed for at nøjes med to kald:
Et, der henter med < og LIMIT 1 Et, der henter med >= og LIMIT 2 og ORDER BY i.image_id
Synes godt om
Slettet bruger
09. december 2005 - 15:28#4
NB! Den virker kun, hvis der rent faktisk er et billede med det ID, der bliver bedt om. Hvis der f.eks eksisterer billeder med id: 3,5,7 vil de komme frem, når man beder om et billede med id=4.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.