Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Guziczki "następne/poprzednie" zdjęcie
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie,
Mam taką tabelę:

  1. CREATE TABLE IF NOT EXISTS `zdjecia` (
  2. `bf_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `idusera` int(11) NOT NULL,
  4. `idgalerii ` int(11) NOT NULL,
  5. `nazwa` varchar(85) COLLATE utf8_unicode_ci DEFAULT NULL,
  6. `miejsce` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
  7. `obrazek` varchar(65) COLLATE utf8_unicode_ci DEFAULT NULL,
  8. UNIQUE KEY `bf_id` (`bf_id`),
  9. UNIQUE KEY `bf_id_2` (`bf_id`),
  10. KEY `bf_id_3` (`bf_id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;


Mam 2 listy zdjęć/galerie (różniące się sortowaniem):
  1. 1. SELECT bf_id, obrazek, miejsce, nazwa FROM zdjecia WHERE idusera=:idusera AND miejsce=:miejsce ORDER BY nazwa ASC;
  2. 2. SELECT obrazek, idgalerii, nazwa, miejsce, bf_id FROM zdjecia WHERE idgalerii=:idgalerii ORDER BY nazwa ASC;


Potrzebuję dla obu list w podglądzie zdjęcia zrobić guziczki "następne zdjęcie" oraz "poprzednie zdjęcie".

Mam aktualnie taki kod dla pkt1:
  1. SELECT bf_id FROM zdjecia WHERE miejsce=:miejsce AND bf_id = (SELECT MIN(bf_id) FROM zdjecia WHERE bf_id>:idobecne) ORDER BY nazwa ASC LIMIT 1;
  2.  
  3. SELECT bf_id FROM zdjecia WHERE miejsce=:miejsce AND bf_id = (SELECT MAX(bf_id) FROM zdjecia WHERE bf_id<:idobecne) ORDER BY nazwa ASC LIMIT 1;


oraz dla pkt 2:
  1. SELECT MIN(bf_id) AS bf_id FROM zdjecia WHERE bf_id>:bf_id AND idgalerii=:idgalerii ORDER BY nazwa ASC LIMIT 1;
  2.  
  3. SELECT MAX(bf_id) AS bf_id FROM zdjecia WHERE bf_id<:bf_id AND idgalerii=:idgalerii ORDER BY nazwa ASC LIMIT 1;


Użytkownik może:
a) wejść w dowolne miejsce w galerii aby je podejrzeć
cool.gif lista zdjęć oraz strzałki poprzednie zdjęcie/następne zdjęcie muszą mieć taką samą kolejność w wyświetlaniu.

W chwili obecnej strzałki nie pokrywają się z kolejnością :-(

Ma ktoś może pomysł jak naprawić moje zapytania? Jak one powinny wyglądać żeby to wyglądało poprawnie?


Bardzo proszę o pomoc,
Northwest

nikt nie potrafi mi pomóc?? sad.gif
trueblue
Następne zdjęcie:
  1. SELECT * FROM ZDJECIE WHERE klucz_sortowania>klucz_sortowania_obecnego_zdjecia ORDER BY klucz_sortowania LIMIT 0,1;

Poprzednie zdjęcie:
  1. SELECT * FROM ZDJECIE WHERE klucz_sortowania<klucz_sortowania_obecnego_zdjecia ORDER BY klucz_sortowania DESC LIMIT 0,1;


northwest
niestety nie działa to poprawnie sad.gif

skrypt głupieje gdy są takie same nazwy zdjęć sad.gif
trueblue
A co mają do tego nazwy zdjęć?
Podałem Ci przykładowe zapytania, obydwa mają się opierać na kluczu sortowania. Nie wiem co jest Twoim kluczem sortowania, ale na pewno nie powinna to być nazwa zdjęcia. Ma to być klucz, wedle którego możesz jednym zapytaniem posortować wszystkie zdjęcia w tabeli, według zadanej kolejności.
mmmmmmm
http://sqlfiddle.com/#!9/93a1d/1
northwest
Dziękuję bardzo za pomoc smile.gif

No właśnie nie wiem czy nie robię bez sensu.
Generalnie mam 2 listy zdjęć wyświetlane takimi zapytaniami:
1. SELECT bf_id, obrazek, miejsce, nazwa FROM zdjecia WHERE idusera=:idusera AND miejsce=:miejsce ORDER BY nazwa ASC;
2. SELECT obrazek, idgalerii, nazwa, miejsce, bf_id FROM zdjecia WHERE idgalerii=:idgalerii ORDER BY nazwa ASC;

Zapytanie które podałeś stosuję w zapytaniu 1 (liście fotek 1)
W momencie gdy kliknę w jakiekolwiek zdjęcie to przechodzę na następną podstronę - na której są te strzałki właśnie.
Chciałbym mieć identyczną kolejność zarówno w podstronie ze zdjęciem jak i na liście.

Zapytanie które podałeś jest okey - ale w momencie gdy mam zdjęcia z opisem "wakacje 2015" (np 5 fotek) - to po wejściu w zdjęcie strzałki
"głupieją" (np. jeśli wejdę w 2 zdjęcie z 5 - to nie ma opcji "poprzednia fotka"). Wydaje mi się właśnie że problemem są te identyczne nazwy fotek...

Da się to jakoś rozwiązać?

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.