![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 9.02.2004 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Jest mały opis inne rozwiązania w dziale php dla Początkujących:
http://forum.php.pl/index.php?showtopic=24139 Problem: Wyszukanie poprzedniego i następnego elementu w liście wyników. Tak aby móc pokazać linki: POPRZEDNI ... NASTPNY na stronie WWW. Problem nie jest trywialny bo wielokrotnie sam PRIMARY KEY nie określa kolejności - mamy często dodatkowe warunki WHERE oraz kolejność np. alfabetyczną.
Podstawowe zapytanie o porcje danych wygląda tak: (pobieram wybraną grupę; nazwiska alfabetycznie; 10 rekordów na stronę; od 20-stego)
Możemy się domyśleć, że id będzie ułożone całkowicie dowolnie... bez regularności. Wybieram teraz pewien rekord klikająć na stronie WWW np. na nazwisku (wybieram np. id='108') Na stronie tego autora chce zobaczyć linki POPRZEDNI, NASTPNY w obrębie tej grupy ('1') oraz wg alfabetu. Jak znaleźć rekord poprzedni i następny? Rozwiązanie podejrzane w kodzie phpMyAdmina polega na pamiętaniu od jakiego wiersza wypisane są wyniki (w przykładzie powyżej: od 20-stego), obliczeniu jaki numer wiersza przypada na wybranego autora (czyli dla id='108': np. 23) i zastosowaniu potem coś takiego: skrypt.php?autor=22 - poprzedni skrypt.php?autor=24 - następny W skrypcie natomiast stworzeniu zapytania:
$autor nie może być mniejszy od jeden oraz większy od ilości rekordów ($autor<1) || ($autor>$maxRecords)
(tutaj mogę pominąć 'ORDER BY' bo nie jest to konieczne) Jak oceniacie takie rozwiązanie? Jakieś sugestie? Może ktoś to już rozpracował? Ten post edytował pauluZ 7.02.2005, 18:07:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:13 |