Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie z bazy.
MagnuM
post 21.05.2005, 14:31:15
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


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.


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 14:34:28
Post #2





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




sortuj w sql:
  1. SELECT *
  2. FROM tabela ORDER BY punkty


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MagnuM
post 21.05.2005, 14:48:18
Post #3





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


ok, to akurat najmniejszy probem, co z wyswietleniem tych trzech rekordów w tabeli, kazdy w nowej lini(tr)?


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 14:57:39
Post #4





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




chociazby tak. w czym problem?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MagnuM
post 21.05.2005, 14:59:39
Post #5





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


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ć


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 15:03:38
Post #6





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




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. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MagnuM
post 21.05.2005, 15:10:25
Post #7





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


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?


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 15:15:03
Post #8





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




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DeyV
post 21.05.2005, 15:18:39
Post #9





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




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.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
MagnuM
post 21.05.2005, 15:24:20
Post #10





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


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.


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 15:27:21
Post #11





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




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");


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MagnuM
post 21.05.2005, 19:05:28
Post #12





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

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


Ok, sprawa rozwiązana. Dziękuję bardzo i przepraszam za zachowanie sad.gif Taki jestem... tongue.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:49