Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Galeria zdjęć - następne/poprzednie
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


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ć (IMG:style_emoticons/default/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

Ten post edytował northwest 16.02.2015, 21:55:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
blahy
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

Ostrzeżenie: (0%)
-----


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.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:04