Problem: Order by i Nastepny/Poprzedni
Johnny - 13-08-2006 00:21
Problem: Order by i Nastepny/Poprzedni
Witam
Mam forum w PHP na bazie MySQL, watki tego forum mozna sortowac wg kilku pol. Wyswietlenie watku pokazuje watek i wpisy oraz pokazuje dwa przyciski: "Nastepny" i "Poprzedni". I teraz problem polega na tym jak w SQLu najprosciej (najmniej obciazajac serwer) zdobyc ID watku poprzedniego i nastepnego majac jedynie ID biezacego i znajac ORDER.
Dzieki za pomoc :-)
pzdr Johnny
Tomasz Judycki - 13-08-2006 00:21
Johnny <moja_ocena@gazeta.pl> napisał(a): > Mam forum w PHP na bazie MySQL, watki tego forum mozna sortowac wg kilku > pol. Wyswietlenie watku pokazuje watek i wpisy oraz pokazuje dwa przyciski: > "Nastepny" i "Poprzedni". > I teraz problem polega na tym jak w SQLu najprosciej (najmniej obciazajac > serwer) zdobyc ID watku poprzedniego i nastepnego majac jedynie ID > biezacego i znajac ORDER.
Radzę przechowywać - np. w polach ukrytych - id poprzedniego i następnego. Jeśli użytkownik kliknie na następny to bieżący staje się poprzednim, a nowy następny można odczytać z selecta, którym odczytuje się kolejny wątek.
Czy mam to dokładniej wyjaśnić?
tj
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Johnny - 13-08-2006 00:21
Dnia Thu, 10 Aug 2006 12:08:51 +0000 (UTC), Tomasz Judycki napisał(a): > Radzę przechowywać - np. w polach ukrytych - id poprzedniego i następnego. > Jeśli użytkownik kliknie na następny to bieżący staje się poprzednim, a nowy > następny można odczytać z selecta, którym odczytuje się kolejny wątek. > > Czy mam to dokładniej wyjaśnić?
Nie trzeba :-) Z tym, ze Pana rozwiazanie nie jest dobre. W tak zwanym miedzyczasiie moze (i na pewno tak sie stanie) pojawic sie nowy watek (watki) i wtedy byc moze trzeba zupelnie inne ID zdobyc.
pzdr Johnny
Radosław Witkowicki - 13-08-2006 00:21
Johnny napisał(a): > Dnia Thu, 10 Aug 2006 12:08:51 +0000 (UTC), Tomasz Judycki napisał(a): >> Radzę przechowywać - np. w polach ukrytych - id poprzedniego i następnego. >> Jeśli użytkownik kliknie na następny to bieżący staje się poprzednim, a nowy >> następny można odczytać z selecta, którym odczytuje się kolejny wątek. >> >> Czy mam to dokładniej wyjaśnić? > > Nie trzeba :-) > Z tym, ze Pana rozwiazanie nie jest dobre. W tak zwanym miedzyczasiie moze > (i na pewno tak sie stanie) pojawic sie nowy watek (watki) i wtedy byc moze > trzeba zupelnie inne ID zdobyc. > > pzdr > Johnny A nie myślałeś, żeby podejrzeć kod phpBB?? Tam napewno takie rozwiązanie ma zastosowanie.
Tomasz Judycki - 13-08-2006 00:21
Johnny <moja_ocena@gazeta.pl> napisał(a): > Dnia Thu, 10 Aug 2006 12:08:51 +0000 (UTC), Tomasz Judycki napisał(a): > > Radzę przechowywać - np. w polach ukrytych - id poprzedniego i następnego. > > Jeśli użytkownik kliknie na następny to bieżący staje się poprzednim, a nowy > > następny można odczytać z selecta, którym odczytuje się kolejny wątek. > > > > Czy mam to dokładniej wyjaśnić? > > Nie trzeba :-) > Z tym, ze Pana rozwiazanie nie jest dobre. W tak zwanym miedzyczasiie moze > (i na pewno tak sie stanie) pojawic sie nowy watek (watki) i wtedy byc moze > trzeba zupelnie inne ID zdobyc.
Och, no to jeszcze prościej trzeba to zrobić: jeśli to ma być poprzedni/następny wg daty i godziny to trzeba przechowywać - np. w polu ukrytym - datę i czas bieżącego wątku.
Następny: select * from watek where dataczas > dataczas_biezacego order by dataczas; Poprzedni: select * from watek where dataczas < dataczas_biezacego order by dataczas desc;
Jeśli poza datą i czasem w warunku występują inne kryteria - np. forum czy autor - to trzeba również przechować wartość tego kryterium i dodać to do zapytania.
tj
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Paweł Matejski - 13-08-2006 00:21
Johnny wrote: > Witam > > Mam forum w PHP na bazie MySQL, watki tego forum mozna sortowac wg kilku > pol. Wyswietlenie watku pokazuje watek i wpisy oraz pokazuje dwa przyciski: > "Nastepny" i "Poprzedni". > I teraz problem polega na tym jak w SQLu najprosciej (najmniej obciazajac > serwer) zdobyc ID watku poprzedniego i nastepnego majac jedynie ID > biezacego i znajac ORDER.
Jak masz order by, to prosto - załóżmy, że sortowaliśmy po dacie, to poprzedni mamy: WHERE data < (select date from t where id = bID) ORDER BY date DESC LIMIT 1
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|