Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie alfabetycznie wyższego rekordu
Forum PHP.pl > Forum > Przedszkole
Warmix
Pobieram z nieuporządkowanej bazy rekordy w sposób alfabetyczny:
  1. mysql_query("SELECT * FROM szablon ORDER BY nazwa ASC");


Pobrany szablon zapisywany jest w bazie danych.

Chciałbym teraz dodać kolejne zapytanie select, po odświeżeniu strony, które:
- także pobierze z tej samej bazy rekord, który jest alfabetycznie wyższy (czyli kolejny po prostu ale także pobrany w sposób porządkujący alfabetycznie z nieuporządkowanej bazy).

W jaki sposób to zrobić?
viking
Możesz sortować po wielu kolumnach.
Order by x ASC, y DESC. U ciebie nazwa i id zapewne.
Warmix
Ale jak miałoby to działać?
Bo dajmy, że mam takie rekordy

Cytat
id- nazwa

1- Ania
2- Robert
3- Kamil
4- Hubert
brak np. 5 i 6
7- Julia


Myślałem, żeby np. podczas pierwsze zapytania, pobrać aktualny rekord oraz rekord, który będzie następny w postaci np. samego id i w następnym zapytaniu pobrać to id i zapytanie będzie rozpoczynało się od tego id, ale także po w sposób alfabetyczny po nazwie (bo tam jest pętla)
czyli np.
zapytnaie pierwsze zwróciło mi:
1- Ania

oraz

4- Hubert - id 4 idzie do bazy

Zapytanie dwa w pętli:
rozpoczyna się od id 4 - Hubert
a następne rekordy to:
7- Julia
3- Kamil
2- Robert


Tylko właśnie w jaki sposób pobrać w pierwszym zapytaniu następny po pobranym rekord (zakładając, że nie koniecznie będzie to drugi w bazie ogólnie, tylko np. pobrany jako pierwszy był rekord 7-Julia zatem następny będzie 3-Kamil i czy w ogóle to ma sens?
nospor
Musisz znalezc sasiadow.
http://nospor.pl/mysql-faq.html#faq-4
viking
Jeśli posortujesz po imieniu i id to będziesz miał rekordy posortowane alfabetycznie ale pierwsze/ostatnie będą zawierały najnowsze id. Nie to chciałeś osiągnąć?
Warmix
viking, ale to chyba zmieni mi także kolejność id, a nie tego właśnie oczekuje

Aktualnie jest tak:
Tabela:
id-nazwa
1-Ania
2-Robert
3-Hubert
4-Kamil
7-Julia

i przy wykonaniu takiego kodu:
  1. $sql = mysql_query("SELECT * FROM szablon ORDER BY nazwa ASC");
  2. while($wynik = mysql_fetch_assoc($sql))
  3. {
  4. echo $wynik['id'].'-'.$wynik['nazwa'].'<br />';
  5. }


Wyrzuca mi:
1-Ania
3-Hubert
7-Julia
4-Kamil
2-Robert


Chciałbym dodać do tego zapytania SQL warunek w którym podane będzie, że np. ma rozpocząć pętlę od następnej większej alfabetycznie nazwy, czyli np.
Dodam warunek, że pobiera dane większe alfabetycznie od nazwy: Hubert
zatem cała pętla zwróci mi taki wynik:
7-Julia
4-Kamil
2-Robert


Jedyne co mi przychodzi do głowy to to, że po prostu dam warunek if w pętli, w którym dam, że zawartość pętli wykonuje się dopiero, gdy nazwa jest większa od podanej w warunku.
Ale czy nie dałoby rady jakoś uniknąć obracania tej pętli w momentach, gdy warunek tego ifa nie byłby spełniony? Może jest możliwość zadeklarowania jakoś tego w WHERE w SELECT?
nospor
Podalem ci rozwiazanie. Czemu ignorujesz moja odpowiedz?
Warmix
Oo już mam. Działa jak należy, dzięki smile.gif
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.