Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php mysql] Jak posortowac wynik z SQL'a
Forum PHP.pl > Forum > Przedszkole
babatunde
Mam takie pytanie jak zrobic sorotowanie wyniku zapytania do MS SQL, tak jak to jest np. w roznych sklepach internetowych sorotowanie wg. ceny rosnaco/malejaco, czy tez sortowanie nazwisk jak to jest na roznych forach.
Szukałem tego jako sortowanie i nigdzie nie znalazlem wytłumaczenia problemu, a w związku z tym ze ucze sie dopiero php to prosze bardzo o pomoc, jak zrobic aby posortowac wynik np. po nazwiskach czy aktywnosci i aby uzytkownik mogl sobie to posortowac rosnaco (naciskajac button) i malejaco (naciskajac drugi button) umieszczony w pierwszej linni tabeli przy np. "Nazwisko" czy "Aktywność"

Mam cos takiego zapytanie:
  1. <table width="580" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  2. <tr align="center" valign="middle">
  3. <td>Imie</td>
  4. <td>Nazwisko</td>
  5. <td>Aktywnosc</td>
  6.  
  7. <?php
  8. $conn = mssql_connect("localhost", "user", "qwerty12345")
  9. or die('nie dalo sie polaczyc');
  10. mssql_select_db("Baza", $conn)
  11. or die("nie dalo sie wybrac bazy");
  12. function query($query)
  13. {
  14. global $conn;
  15. return mssql_query($query, $conn);
  16. }
  17.  
  18. $query = "SELECT * FROM Osoby ORDER BY NAZWA ASC";
  19. $result = mssql_query($query)
  20. or die("Zapytanie odrzucone");
  21.  
  22.  
  23.  
  24.  
  25. while ($row = mssql_fetch_array($result)) {
  26. echo "<TR><TD>" . $row["Min"] ."</TD><td>" .
  27.  $row["Imie"] ."</TD><td>" .
  28. $row["Nazwisko"] ."</TD><td>" .
  29.  $row["Nazwa"] ."</TD><td>" .
  30.  $row["Aktywnosc"] ."</TD>" .
  31.  "n";
  32. }
  33.  
  34. mssql_free_result($result);
  35. mssql_close($link);
  36. ?>
  37. </table>

Gdyby ktos był tak miły i podpowiedział jakimś przykładem, linkiem do wyjaśnienia tego po polsku czy nakierował jak tego szukać byłbym bardzo wdzięczny...
wipo
Cytat(babatunde @ 7.10.2006, 15:13:21 ) *
Mam takie pytanie jak zrobic sorotowanie wyniku zapytania do MS SQL, tak jak to jest np. w roznych sklepach internetowych sorotowanie wg. ceny rosnaco/malejaco, czy tez sortowanie nazwisk jak to jest na roznych forach.
Szukałem tego jako sortowanie i nigdzie nie znalazlem wytłumaczenia problemu, a w związku z tym ze ucze sie dopiero php to prosze bardzo o pomoc, jak zrobic aby posortowac wynik np. po nazwiskach czy aktywnosci i aby uzytkownik mogl sobie to posortowac rosnaco (naciskajac button) i malejaco (naciskajac drugi button) umieszczony w pierwszej linni tabeli przy np. "Nazwisko" czy "Aktywność"

Mam cos takiego zapytanie:
  1. <table width="580" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  2. <tr align="center" valign="middle">
  3. <td>Imie</td>
  4. <td>Nazwisko</td>
  5. <td>Aktywnosc</td>
  6.  
  7. <?php
  8. $conn = mssql_connect("localhost", "user", "qwerty12345")
  9. or die('nie dalo sie polaczyc');
  10. mssql_select_db("Baza", $conn)
  11. or die("nie dalo sie wybrac bazy");
  12. function query($query)
  13. {
  14. global $conn;
  15. return mssql_query($query, $conn);
  16. }
  17.  
  18. $query = "SELECT * FROM Osoby ORDER BY NAZWA ASC";
  19. $result = mssql_query($query)
  20. or die("Zapytanie odrzucone");
  21.  
  22.  
  23.  
  24.  
  25. while ($row = mssql_fetch_array($result)) {
  26. echo "<TR><TD>" . $row["Min"] ."</TD><td>" .
  27.  $row["Imie"] ."</TD><td>" .
  28. $row["Nazwisko"] ."</TD><td>" .
  29.  $row["Nazwa"] ."</TD><td>" .
  30.  $row["Aktywnosc"] ."</TD>" .
  31.  "n";
  32. }
  33.  
  34. mssql_free_result($result);
  35. mssql_close($link);
  36. ?>
  37. </table>

Gdyby ktos był tak miły i podpowiedział jakimś przykładem, linkiem do wyjaśnienia tego po polsku czy nakierował jak tego szukać byłbym bardzo wdzięczny...

order by nazwa_pola
Kuziu
Przesyłasz sobie zmienną GET'em lub POST'em z informacją względem czego ma być sortowane np.

  1. <?php
  2. $query = 'SELECT * FROM Osoby ORDER BY ';
  3. switch($_GET['sortby']){
  4. case 'name': $query .= 'name'; break;
  5. case 'age': $query .= 'age'; break;
  6. default: $query .= 'name'; break;
  7. }
  8. ?>


No i oczywiscie dopisujesz odpowiednio wiecej case'ow.

Do tego mozesz przeslac zmienna DESC lub nie by byla odwrotna kolejnosc:
  1. <?php
  2. if(isset($_GET['desc']))
  3. $query .= ' DESC';
  4. ?>
babatunde
A gdzie dopisuje ten fragment ze zminenna do buttona? Czy gdzie indziej?
1010
jakiego buttona?
erix
Np.
  1. <a href="plik.php?sortby=name">Nazwą</a>
babatunde
Cytat(1010 @ 8.10.2006, 21:26:37 ) *
jakiego buttona?

no takiego mam nazwe kolumny np. nazwiska i obok niej mam strzalke gora i strzalke w dol.
No i chcialbym zeby po na poczaktu zapytanie do sql'a szło bez żadnych kryterow sortowania i wyswietlalo sie np. wg kolejnosci wpisow np. z kolumny Id, ale zebym mogl przy np. nazwisku kliknac sobie na strzalke w dol i miec posortowane to od A do Z a jakbym chcial odwrotnie to kliknalbym strzalke w gore....
Lonas
No to zrób sobie domyslne sortowanie wedlug ID,
i na strzalkach linki - np przekazujesz $_GET - wartosc wedlug ktorej sorotwac i po sprawie

  1. <?php
  2. $sortuj = $_GET['sortuj'];
  3.  
  4. if(isset($sortuj)) { 
  5. $sortuj = $_GET['sortuj']; 
  6. }else {
  7. $sortuj = 'id'; }
  8.  
  9.  
  10. $zapytanie = mysql_ ..... (" order by $sortuj" );
  11. ?>
pataka
Cytat(Kuziu @ 7.10.2006, 14:21:16 ) *
  1. <?php
  2. $query = 'SELECT * FROM Osoby ORDER BY ';
  3. switch($_GET['sortby']){
  4. case 'name': $query .= 'name'; break;
  5. case 'age': $query .= 'age'; break;
  6. default: $query .= 'name'; break;
  7. }
  8. ?>


Do tego mozesz przeslac zmienna DESC lub nie by byla odwrotna kolejnosc:
  1. <?php
  2. if(isset($_GET['desc']))
  3. $query .= ' DESC';
  4. ?>

A ja mam takie pytanie jak zrobić, aby po posortowaniu wg. wyżej wymienionego sposobu nie utracić zmiennej przeslanej przez 'post'?questionmark.gif

Mam tabele w której sa kolumny Data | Symbol | Dane
i teraz wstawilem powyższy skrypt, ale wcześniej przez
  1. <form action="" method="post">
i menu select chciałbym wybrać sobie Symbol, wszystko dziala ok i po wybraniu z menu (select) do zapytania SQL'owego dodawane jest to:
  1. WHERE Symbol = 'i tu zmienna przeslana postem z menu select'

I zwracany jest wynik zawezony do jednego z 5 symboli...
Ale po wybraniu sortowania, tracę zmienną przesłaną przez post...
Tak więc, może ktoś podpowie - co zrobić aby zmienna ($Symbol) przesłana przez post została zapamiętana?
I w momencie kiedy zmieniam wybrany symbol i po ponownym przesortowaniu znow nie utracić nowej wartości zmiennej $Symbol
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.