Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Guziczki "następne/poprzednie" zdjęcie
northwest
post 16.03.2015, 20:25:58
Post #1





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

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


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

Ten post edytował northwest 13.03.2015, 17:35:47
Go to the top of the page
+Quote Post
trueblue
post 16.03.2015, 20:41:51
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


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;




--------------------
Go to the top of the page
+Quote Post
northwest
post 16.03.2015, 21:06:43
Post #3





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

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


niestety nie działa to poprawnie sad.gif

skrypt głupieje gdy są takie same nazwy zdjęć sad.gif
Go to the top of the page
+Quote Post
trueblue
post 16.03.2015, 22:09:31
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


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.


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post 17.03.2015, 09:00:15
Post #5





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


http://sqlfiddle.com/#!9/93a1d/1
Go to the top of the page
+Quote Post
northwest
post 17.03.2015, 09:26:40
Post #6





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

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


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ć?

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 03:25