Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Galeria zdjęć - następne/poprzednie
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie,
Mam taką tabelę ze zdjęciami:
  1. CREATE TABLE IF NOT EXISTS `zdjecia` (
  2. `id` bigint(20) UNSIGNED NOT NULL,
  3. `user` int(11) NOT NULL,
  4. `nazwa` varchar(85) COLLATE utf8_unicode_ci DEFAULT NULL,
  5. `datadodania` datetime NOT NULL,
  6. `enable` int(11) NOT NULL,
  7. `idgalerii` int(11) NOT NULL,
  8. `miejsce` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
  9. `obrazek` varchar(65) COLLATE utf8_unicode_ci DEFAULT NULL,
  10. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  11.  
  12. ALTER TABLE `zdjecia`
  13. MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;
  14.  
  15. ALTER TABLE `zdjecia`
  16. ADD UNIQUE KEY `id ` (`id `), ADD UNIQUE KEY `id_2` (`id `), ADD KEY `id_3` (`id `);



Mam zapytanie wyświetlające listę zdjęć:
  1. SELECT * FROM zdjecia WHERE user =:user AND miejsce=:miejsce ORDER BY nazwa ASC;


Po kliknięciu w zdjęcie chce zrobić guziczki następne/poprzednie.

Jak powinny wyglądać zapytania dla tych guziczków?

Kombinuję z czymś takim:
  1. SELECT id FROM zdjecia WHERE miejsce=:miejsce id > :idobecne ORDER BY nazwa ASC, id DESC LIMIT 1 // następne
  2. SELECT id FROM zdjecia WHERE miejsce=:miejsce id < :idobecne ORDER BY nazwa ASC, id DESC LIMIT 1 // poprzednie


Tylko nie bardzo chce mi to działać sad.gif Tzn działa, ale np. e przypadku gdy mam 3 zdjęcia:
- foto 1
- foto 2
- foto 3

i wybiorę foto 1 - to skrypt "widzi" zdjęcia "poprzednie" (np. 2) z kolei gdy wybiorę foto 3 - to skrypt "widzi" jedno zdjęcie "następne" - po czym poprawne wyświetla poprawnie...

Mógłby ktoś mi pomóc z tymi zapytaniami?

Bardzo proszę o pomoc,
Northwest
blahy
A nie powinno byc :
  1. SELECT id FROM zdjecia WHERE miejsce=:miejsce AND id < :idobecne ORDER BY nazwa ASC, id DESC LIMIT 1 #poprzednie - albo order by id

i
  1. SELECT id FROM zdjecia WHERE miejsce=:miejsce AND id > :idobecne ORDER BY nazwa ASC, id ASC LIMIT 1 #nastepne

?

Moze lepiej to potraktowac jak paginacje dla 1 elementu na strone?
czyli:
  1. SELECT id FROM zdjecia WHERE miejsce=:miejsce ORDER BY nazwa ASC LIMIT 1 OFFSET :strona-1 #poprzednia

i
  1. SELECT id FROM zdjecia WHERE miejsce=:miejsce ORDER BY nazwa ASC LIMIT 1 OFFSET :strona+1 #nastepna

oczywiscie dla strony 1 nie robimy zapytania o strone poprzednia, a jak nastepna zwraca pusty rekord to nie wyswietlamy linka do nastepnej.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.