Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobieranie alfabetycznie wyższego rekordu
Warmix
post
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


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ć?
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Możesz sortować po wielu kolumnach.
Order by x ASC, y DESC. U ciebie nazwa i id zapewne.
Go to the top of the page
+Quote Post
Warmix
post
Post #3





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


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?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Musisz znalezc sasiadow.
http://nospor.pl/mysql-faq.html#faq-4
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


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ąć?
Go to the top of the page
+Quote Post
Warmix
post
Post #6





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


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?

Ten post edytował Warmix 14.09.2016, 14:24:48
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Podalem ci rozwiazanie. Czemu ignorujesz moja odpowiedz?
Go to the top of the page
+Quote Post
Warmix
post
Post #8





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


Oo już mam. Działa jak należy, dzięki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 13:45