Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie z bazy.
Forum PHP.pl > Forum > Przedszkole
MagnuM
Witam.

Mam w bazie, a właściwie tabeli następujące pola: id, punkty.

Rekordy są zapisane następująco:
1 | 1000
2 | 1250
3 | 900

Chciałbym teraz w umieścić w tabeli posortowane według punktów rekordy. Próbowałem to zrobic za pomocą pętli while, ale efekt mizerny. Nie da się posortować według punktów i wyświetlić. Znaczy pewnie się da, ale ja wyświetlałem w pętli rekord WHERE id = (i teraz to podniesione co pętle id), co jak wiadomo mija się z celem.

Ma ktoś jakiś pomysł?
Dziękuję, pozdrawiam.
nospor
sortuj w sql:
  1. SELECT *
  2. FROM tabela ORDER BY punkty
MagnuM
ok, to akurat najmniejszy probem, co z wyswietleniem tych trzech rekordów w tabeli, kazdy w nowej lini(tr)?
nospor
chociazby tak. w czym problem?
MagnuM
jejku, brak słów, tak to znacz jak? przeciez napisałem że przy pomocy pętli while nie potrafie tego zrobić, daj jakiś przykład, żebym mógł się zorientować
nospor
brak słów to na takie phtania jak twoje. spojrzyj do manuala od czazsu do czasu, na forum poszukaj . bylo full razy.

masz z manuala. wypisuje w nowej linii a nie w tabeli:
  1. <?php
  2. mysql_connect('localhost', 'uzytkownik', 'haslo') or
  3. die('Nie można się połączyć: ' . mysql_error());
  4.  
  5. $result = mysql_query(&#092;"SELECT id, nazwa FROM tabela\");
  6.  
  7. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  8. printf (&#092;"ID: %s Nazwa: %s<br>\", $row[0], $row[\"nazwa\"]);
  9. }
  10. ?>
MagnuM
Kolego, jeżeli nie masz do dodania nic co związane byłoby z odpowidzią na zadane pytanie to proszę, nie udzielaj się.

Nie napisałem, że nie potrafię wyswietlić w kolejności w pętli while rekordów z bazy bo to nie jest problem. Napisałem za to, że nie potrafię w pętli while wyświetlić posortowanych rekordów według danego pola kilka razy. Rozumiesz już?

Czyli potrzebuję wyświetlić to tak:

1250
1000
900

Jest tu problem więc pewien problem. Jak to wyświetlić aby było w ten sposób posortowane?
nospor
sorki, strasznie nie wyraźnie się wysławiasz. jak można posortować według danego ola kilka razy. sorki, ale nie kumam. może wytlumacz powoli, jak dla debila(nie uwazam sie za takiego, ale może wtedy zakumam i inni moze tez(chyba ze juz kumaja)). Jakis bardziej konkretny przyklad może?
DeyV
Ni w ząb nie rozumiem, w czym problem.

Jeśli chcesz wyświetlić dane pobierane z bazy SQL, to odpowiedź nospora jest w pełni wystarczająca - najpierw order by w zapytaniu, a potem zwyczajny while.

Jeśłi jednak dane zapisane zą nie w tabeli bazy tylko w tablicy php, to rozwiązanie jest również proste.

robisz asort" title="Zobacz w manualu PHP" target="_manual( $aDane );
a potem przy pomocy foreach" title="Zobacz w manualu PHP" target="_manual( $aDane as $iId => $iPunkty )
wyświetlasz posortowane dane.
MagnuM
Heh winksmiley.jpg

Mam pole id i pole punkty. Zapisane są np. trzy rekordy.

id | punkty
----------------
1 | 1250
2 | 900
3 | 1000

Jak widać, pola nie są posortowane. To znaczy, potrzebuję je wyświetlić nie pokoleji, według id, tylko pokoleji według punktów. To znaycz, na od góry w dół punkty malejąco w tabeli.

I tu jest problem.

  1. <?php
  2.  
  3. $id = 1;
  4.  
  5. while($id<4)
  6. {
  7. $sqlQuery = mysql_query(&#092;"SELECT * tabela WHERE id = '$id'\");
  8. $sqlArray = mysql_fetch_array($sqlQuery);
  9.  
  10. $punkty = $sqlArray['punkty'];
  11.  
  12. echo(&#092;"<tr><td>$punkty</td></tr>\");
  13.  
  14. $id++;
  15. }
  16.  
  17. ?>


Coś takiego wyświetli mi posortowane według id. Ja potrzebuję według punktów i chyba innym sposobem bo sprawdzanie czy jest jakiś rekord z punktami np. 1100 gdzie punkty są w przedziale 1-2000 to głupota.
nospor
W koncu gadasz jak czlowiek. Next time "kolego" nie denerwuj się na ludzi tylko za to że chcą ci pomóc ale cię nie rozumieją.

Tu nie trzeba zadnej petli dla zapytan tylko jedno zapytanie. POdobne do tego co wczesniej ci dalem:

$sqlQuery = mysql_query("SELECT * from tabela WHERE id <4 order by punkty");
MagnuM
Ok, sprawa rozwiązana. Dziękuję bardzo i przepraszam za zachowanie sad.gif Taki jestem... tongue.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.