Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]kolejny problem z nawigacją(poprzednie,nastepne zdjecia)
lamcpp
post 5.12.2009, 19:10:41
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

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


witam, myslałem ze już poradziłem sobie z problemem next i previous dla następnego i poprzedniego zdjęcia. Ale niestety tak się nie stało.
Teraz musze zrobić nawigację (czyli możliwość wyswietlenia następnego i poprzedniego zdjęcia) dla zdjęć, które zostały uzyskane w wyniku zapytania SELECT które porządkowało je rosnąco i malejąco względem nazwy oraz daty dodania. Ale żeby nie było prosto, niestety zdjęcia muszą się pojawiać w kolejności w jakiej widnieją na stronie.
Przykładowe zapytanie wygląda tak:
  1. SELECT zdjecie.id,nazwa,plik,id_kategorii,id_miejsca,id_daty FROM zdjecie ORDER BY zdjecie.nazwa ASC

Wyniki jakie daje:
I tak też one się wyswietlają na stronie, czyli jako pierwsze zdjęcie o id 29, pozniej id 30, dalej 17, dalej 18, dalej 19
Jak widać posortowane są alfabetycznie. Teraz problemem jest zrobienie nawigacji, ponieważ nie można odnieść się np takim zapytaniem:
  1. $previous = "SELECT zdjecie.id,nazwa,plik,id_kategorii,id_miejsca,id_daty FROM zdjecie WHERE zdjecie.id <{$_GET['id']} ORDER BY zdjecie.nazwa ASC LIMIT 1";
  2. $next = "SELECT zdjecie.id,nazwa,plik,id_kategorii,id_miejsca,id_daty FROM zdjecie WHERE zdjecie.id >{$_GET['id']} ORDER BY zdjecie.nazwa DESC LIMIT 1"

ponieważ jak widać na screenie, zdjecia są posortowane po nazwie. I przykładowo klikniemy na zdjęcie o id 18 i teraz chcemy nawigacje zeby naciskając "poprzedni" przeniosło nas do zdjęcia o id 17 to się jeszcze uda za pomocą powyzszego zapytania. Ale już do kolejnego pola wstecz się nie odniesiemy ponieważ jego id jest większe od bierzącego id.
Podsumowując: nie wiem po czym sprawdzić albo jakie zapytanie napisać, żeby wyświetliło mi listę zdjęć, które znajdują się przed zdjęciem np. o id 18, nie mozna uzyc tu zapytania zdjecie.id < $_GET['id'] ponieważ zdarzają się zdjęcia, których id jest wieksze od id 18, a to z tego względu że zdjecia są sortowane alfabetycznie. TO polecenie miało by prawo bytu gdybysmy zdjęcia sortowali po id, wtedy wiedzielibysmy, że napewno poprzednie id będzie mniejsze od bierzącego, albo wieksze i bez problemu moglibysmy dołaczyc przyciski previous i next. A tak mam problem;/Mam nadzieje ze ktos zrozumiał o co mi chodzi:)

Ten post edytował lamcpp 5.12.2009, 19:11:49
Go to the top of the page
+Quote Post
tvister
post 5.12.2009, 20:38:15
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

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


Pobierz listę id w kolejności jaką sobie zażyczysz i załatw id_poprzednie, id_następne php-em i cześć.


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
lamcpp
post 5.12.2009, 21:29:27
Post #3





Grupa: Zarejestrowani
Postów: 372
Pomógł: 2
Dołączył: 10.05.2009

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


no dobra, liste w kolejności jakiej chce, czyli załózmy posortowaną rosnąco pobiore za pomocą zapytania SQL, tak jak to podane wyzej,
ale chodzi własnie jak tą resztę "załatwić w PHP". mając liste załózmy za pomocą mysql_fetch_array wyciagne z niej wszystkie elementy, mogę też przyrównać id uzyskany z GET do elementu listy i znaleść ten ID, ale jak wobec tego mając nawet ten ID zrobić następny i poprzedni?
Go to the top of the page
+Quote Post
tvister
post 6.12.2009, 20:53:32
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

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


$wsz_id = array(1,3,6,7);
$klucz = array_search(3, $wsz_id);

$poprzedni = $wsz_id[$klucz - 1];
$nastepny = $wsz_id[$klucz + 1];

No do tego jeszcze musisz obsłużyć sytuacje brzegowe dla 1 i 7;


--------------------
Kto rano wstaje ten leje jak z cebra.
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: 1.07.2025 - 07:31