Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Sortowanie wyników
arek33
post 7.04.2009, 10:51:26
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


Witam,

Mam taką tabelkę z wynikami, sortowaną wg nazwiska. Ale chciałbym jeszcze zrobić sortowanie wg imienia, nazwiska i zarobków po kliknięciu przez użytkownika w nagłówek. Przykład na Allegro: http://www.allegro.pl/26014_antyki.html - nazwa, cena, z dostawą etc. Po jednym kliknięciu sortuje od A do Z w nazwie, natomiast tam, gdzie pojawiają się liczby sortuje od najniższej ceny do najwyższej. No i działa to też w drugą stronę - gdy jest już posortowane np. wg nazwy od A do Z to po kliknięciu mamy od Z do A.

  1. <?php
  2.  
  3. $wynik = mysql_query("SELECT * FROM zarobki ORDER by nazwisko")
  4. or die('Błąd zapytania.');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7.        echo "<table id=\"grid\">";
  8.        echo "<tr class=\"nt\">";
  9.        echo "<td>".Lp."."."</td>";
  10.    echo "<td>".Imię."</td>";
  11.        echo "<td>".Nazwisko."</td>";
  12.        echo "<td>".Zarobki."</td>";
  13.        echo "<td>".E."</td>";
  14.    echo "<td>".U."</td>";
  15.    echo "</tr>";
  16. while($r = mysql_fetch_array($wynik)) {
  17.        echo "<tr class=\"nt\">";
  18.        echo "<td>".$i++."."."</td>";
  19.        echo "<td>".$r['imie']."</td>";
  20.        echo "<td>".$r['nazwisko']."</td>";
  21.        echo "<td>".$r['zarobki']."</td>";
  22.        echo "<td style=\"text-align:center\" width=\"35px\">
  23.                    <a href=\"edit.php?a=edit&id={$r['id']}\"><img src=\"i/edit.gif\"></a></td>";
  24.        echo "<td width=\"35px\" style=\"text-align:center\">
  25.                    <a href=\"del.php?a=del&id={$r['id']}\"><img src=\"i/del.png\"></a></td>";
  26.        echo "</tr>";
  27.              
  28.   }
  29.        echo "</table>";
  30.        echo "<p class=\"pasek\">* - Rekord był przynajmniej raz edytowany.</p>";
  31.      
  32. }
  33.  
  34. else { echo "<h4>Brak danych w bazie. <a href=\"add.php\">Wprowadź</a> dane.</h4>"; }
  35.  
  36. require('footer.php');
  37.  
  38. ?>


Myślałem o sortowanie ze zmienną ("SELECT * FROM zarobki ORDER by $sort"), ale nie bardzo mam pomysł, aby się za to zabrać. Mógłby mi ktoś w tej kwestii pomóc?

Pozdrawiam,
Arek

Ten post edytował arek33 8.04.2009, 23:20:57
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
TomASS
post 7.04.2009, 11:15:12
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Tak - zrób tak jak to nazwałeś: "sortowanie ze zmienną" plus
  1. ORDER BY pole DESC
albo
  1. ORDER BY pole ASC
aby mieć kolejność rosnącą lub malejącą.


--------------------
Go to the top of the page
+Quote Post
DREEMus
post 7.04.2009, 11:16:52
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 34
Dołączył: 4.09.2008
Skąd: Wrocław

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


  1. SELECT * FROM `zarobki` ORDER BY `nazwisko` ASC
od A do Z
  1. SELECT * FROM `zarobki` ORDER BY `nazwisko` DSC
od Z do A


--------------------
Serwer : Acer Aspire 5050 : AMD Turion X2 2x1.9 MHz : 2x2 GB Dual : 250GB + 500 GB USB
Warsztat : Apache v2.2 : PHP v5.2 : MySQL v5.0 : phpMyAdmin v3.4 : phpDesigner v7
Go to the top of the page
+Quote Post
kajzur
post 7.04.2009, 11:18:09
Post #4





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

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


Może prześlij zmienną get? No wiesz, dajesz jakąś standardową, np nazwisko, i przy kliknieciu zmieniasz tę zmienną i pobierasz wg niej ;>


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post
piotrooo89
post 7.04.2009, 11:22:34
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jeśli chcesz zrobić to dynamicznie musisz użyć JS. ja polecam mintAjax. http://mintajax.pl/Przewodnik/Kontrolki/ na samym dole masz Dynamiczna tabela i myślę że sobie dostosujesz do własnych potrzeb.

//EDIT

lekki byczek się wkradł.

Ten post edytował piotrooo89 7.04.2009, 11:57:46


--------------------
Go to the top of the page
+Quote Post
TomASS
post 7.04.2009, 11:39:47
Post #6





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


A do czego zaraz AJAX? Aby "dynamicznie" (tzn. bez udziału bazy danych, korzystając jedynie z przeglądarki) posortować tabelę wystarczy zwykły JS zobacz.


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post 7.04.2009, 11:57:11
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(TomASS @ 7.04.2009, 12:39:47 ) *
A do czego zaraz AJAX?


tak tak. znów użyłem skrótu myślowego chodzi mi o JS oczywiście.


--------------------
Go to the top of the page
+Quote Post
arek33
post 8.04.2009, 23:17:09
Post #8





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


Zrobiłem w ten sposób:

  1. <?php
  2.  
  3. $wynik = mysql_query("SELECT * FROM zarobki ORDER by nazwisko")
  4. or die('Błąd zapytania.');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7.        echo "<table id=\"grid\">";
  8.        echo "<tr class=\"nt\">";
  9.        echo "<td>".Lp."."."</td>";
  10.    echo "<td>".Imię."</td>";
  11.        echo "<td>".Nazwisko."</td>";
  12.        echo "<td>".Zarobki."</td>";
  13.        echo "<td>".E."</td>";
  14.    echo "<td>".U."</td>";
  15.    echo "</tr>";
  16. while($r = mysql_fetch_array($wynik)) {
  17.        echo "<tr class=\"nt\">";
  18.        echo "<td>".$i++."."."</td>";
  19.        echo "<td>".$r['imie']."</td>";
  20.        echo "<td>".$r['nazwisko']."</td>";
  21.        echo "<td>".$r['zarobki']."</td>";
  22.        echo "<td style=\"text-align:center\" width=\"35px\">
  23.                    <a href=\"edit.php?a=edit&id={$r['id']}\"><img src=\"i/edit.gif\"></a></td>";
  24.        echo "<td width=\"35px\" style=\"text-align:center\">
  25.                    <a href=\"del.php?a=del&id={$r['id']}\"><img src=\"i/del.png\"></a></td>";
  26.        echo "</tr>";
  27.              
  28.   }
  29.        echo "</table>";
  30.        echo "<p class=\"pasek\">* - Rekord był przynajmniej raz edytowany.</p>";
  31.      
  32. }
  33.  
  34. else { echo "<h4>Brak danych w bazie. <a href=\"add.php\">Wprowadź</a> dane.</h4>"; }
  35.  
  36. require('footer.php');
  37.  
  38. ?>


ale coś mi nie działa. Nie wyrzuca żadnego błędu, ale sortowanie nie działa w ogóle.

Ten post edytował arek33 8.04.2009, 23:19:44
Go to the top of the page
+Quote Post
piotrooo89
post 9.04.2009, 08:33:19
Post #9


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




http://olaszewski.com/2009/04/07/dynamiczna-tabelka-a-mysql/ przeczytaj uważnie.

podpowiedź: <thead> <tbody>


--------------------
Go to the top of the page
+Quote Post
arek33
post 9.04.2009, 10:09:12
Post #10





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


Nie rozumiem, wrzuciłem zupełnie inny kod i normalnie mi wyświetliło na forum to co skopiowałem z pliku index.php, a dzisiaj widzę, że powyższy kod różni się zaledwie dwoma linijkami od poprzedniego.

Także jeszcze raz wklejam to, co chciałem zrobić wczoraj:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  4. <title>zarobki</title>
  5. <link rel="stylesheet" href="style.css" type="text/css"/>
  6.  
  7. <script type="text/javascript">
  8. function OnLoad()
  9. {
  10.    var grid = mint.gui.CreateGridWidget("grid");
  11.  
  12.    grid.AddSortCells();
  13. }        
  14. </script>
  15.  
  16. </head>
  17.  
  18. <body>
  19.  
  20. <?php
  21.  
  22. $wynik = mysql_query("SELECT * FROM zarobki ORDER by nazwisko")
  23. or die('Błąd zapytania.');
  24.  
  25. if(mysql_num_rows($wynik) > 0) {
  26.       echo "<table id=\"grid\">";
  27.             echo "<thead>";
  28.       echo "<tr class=\"nt\">";
  29.       echo "<td>".Lp."."."</td>";
  30.             echo "<td>".Imię."</td>";
  31.       echo "<td>".Nazwisko."</td>";
  32.       echo "<td>".Zarobki."</td>";
  33.       echo "<td>".E."</td>";
  34.             echo "<td>".U."</td>";
  35.             echo "</tr>";
  36.             echo "</thead>";
  37.             echo "<tbody>";
  38. while($r = mysql_fetch_array($wynik)) {
  39.       echo "<tr class=\"nt\">";
  40.       echo "<td>".$i++."."."</td>";
  41.       echo "<td>".$r['imie']."</td>";
  42.       echo "<td>".$r['nazwisko']."</td>";
  43.       echo "<td>".$r['zarobki']."</td>";
  44.       echo "<td style=\"text-align:center\" width=\"35px\">
  45.                         <a href=\"edit.php?a=edit&id={$r['id']}\"><img src=\"i/edit.gif\"></a></td>";
  46.       echo "<td width=\"35px\" style=\"text-align:center\">
  47.                         <a href=\"del.php?a=del&id={$r['id']}\"><img src=\"i/del.png\"></a></td>";
  48.       echo "</tr>";
  49.             echo "</tbody>";
  50.              
  51.  }
  52.       echo "</table>";
  53.      
  54. }
  55.  
  56. else { echo "<h4>Brak danych w bazie. <a href=\"add.php\">Wprowadź</a> dane.</h4>"; }
  57.  
  58. require('footer.php');
  59.  
  60. ?>
Go to the top of the page
+Quote Post
piotrooo89
post 9.04.2009, 10:14:48
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




nie przeczytałeś uważnie... gdzie dołączasz skrypt mintAjaxa?


--------------------
Go to the top of the page
+Quote Post
arek33
post 9.04.2009, 10:27:14
Post #12





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


W head mam dodać:

  1. <script type="text/javascript" src="/js/mintAjax.js"></script>


?
Go to the top of the page
+Quote Post
piotrooo89
post 9.04.2009, 10:39:37
Post #13


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




tak tylko w scr masz podać ścieżkę do Twojego umiejscowienia skryptu. na strona mintajax.pl masz napisane jak zainicjować.


--------------------
Go to the top of the page
+Quote Post
arek33
post 9.04.2009, 10:50:32
Post #14





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


O poprawnym źródle do js wiem, ale nie bardzo wiem jak mam zainicjować to. Może jakiś przykład?

PS. Sorry, ale jestem zupełnie początkującym smile.gif
Go to the top of the page
+Quote Post
piotrooo89
post 9.04.2009, 10:56:20
Post #15


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Twój head powinien wyglądać tak:

  1. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  2. <title>zarobki</title>
  3. <link rel="stylesheet" href="style.css" type="text/css"/>
  4.  
  5. <script type="text/javascript" src="/js/mintAjax.js"></script>
  6.  
  7. <script type="text/javascript">
  8. function OnLoad()
  9. {
  10. var grid = mint.gui.CreateGridWidget("grid");
  11.  
  12. grid.AddSortCells();
  13. }
  14.  
  15. </head>


a to co to jest?

  1. <?php
  2. echo "<td>".Lp."."."</td>";
  3. echo "<td>".Imię."</td>";
  4. echo "<td>".Nazwisko."</td>";
  5. echo "<td>".Zarobki."</td>";
  6. echo "<td>".E."</td>";
  7. echo "<td>".U."</td>";
  8. ?>


nie masz tu żadnych zmiennych powinno być:

  1. <?php
  2. echo "<td>Lp.</td>";
  3. echo "<td>Imię</td>";
  4. echo "<td>Nazwisko</td>";
  5. echo "<td>Zarobki</td>";
  6. echo "<td>E</td>";
  7. echo "<td>U</td>";
  8. ?>


--------------------
Go to the top of the page
+Quote Post
arek33
post 9.04.2009, 11:05:03
Post #16





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


Head dokładnie tak wygląda jak opisałeś. Zmieniłem w znacznikach <td> wartości i nadal to samo. Po najechaniu na nagłówek pojawia się łapka, ale skrypt nie działa.
Go to the top of the page
+Quote Post
piotrooo89
post 9.04.2009, 11:12:14
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




omg... tu jest byk:

  1. <body onLoad="onLoad();">


no i teraz już musi być.


--------------------
Go to the top of the page
+Quote Post
arek33
post 9.04.2009, 11:20:47
Post #18





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


Niestety, dalej to samo. Wkleję jeszcze raz kod...

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3. <title>zarobki</title>
  4. <link rel="stylesheet" href="style.css" type="text/css"/>
  5.  
  6. <script type="text/javascript" src="http://serwer.pl/js/mintAjax.js"></script>
  7.  
  8. <script type="text/javascript">
  9. function OnLoad()
  10. {
  11.   var grid = mint.gui.CreateGridWidget("grid");
  12.  
  13.   grid.AddSortCells();
  14. }        
  15.  
  16. </head>
  17.  
  18. <body onLoad="onLoad();">
  19.  
  20. <?php ... ?>
  21.  
  22. </body>
  23. </html>


Ten post edytował arek33 9.04.2009, 11:21:12
Go to the top of the page
+Quote Post
piotrooo89
post 9.04.2009, 11:24:23
Post #19


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




kurka no mam tak samo i mi hula. na pewno masz dobrą ścieżkę do pliku? a spróbuj kilka razy kliknąć na ten nagłówek po którym ma być sortowane.


--------------------
Go to the top of the page
+Quote Post
arek33
post 9.04.2009, 11:31:35
Post #20





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


Próbowałem też tak robić, ale elektu nie ma, próbowałem też w zapytaniu usunąć sortowanie, ale też nic nie daje :<
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 02:00