Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql]Problem z sortowaniem, Bardzo prosze o pomoc
krzychu91
post 10.04.2011, 21:10:15
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 10.04.2011

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


A więdz tak pisze skrypt "plan lekcji" dla szkoł i mam taki problem:
w bazie mysql jest podzielone na tabelki:
dzien | godz | klasa | przedmiot | sala | nauczyciel
Skrypt będzie działać na podstawie napisanego planu dla nauczycieli, który będzie wyszukiwał dana klase w tabelkach od nauczycieli i układał plan dla uczniów i sal.
Jak posortowac coś takiego:

Dzien: PONIEDZIALEK, godz: 4, klasa: 4b, przedmiot: Polski, sala: 21, nauczyciel: 1
Dzien: WTOREK, godz: 7, klasa: 4b, przedmiot: Polski, sala: 36, nauczyciel: 2
Dzien: SRODA, godz: 11, klasa: 4b, przedmiot: Polski, sala: 21, nauczyciel: 3
Dzien: CZWARTEK, godz: 1, klasa: 4b, przedmiot: Polski, sala: 18, nauczyciel: 4
Dzien: PIATEK, godz: 9, klasa: 4b, przedmiot: Polski, sala: 27, nauczyciel: 5
Dzien: PONIEDZIALEK, godz: 7, klasa: 4b, przedmiot: Syst, sala: 18, nauczyciel: 6
Dzien: WTOREK, godz: 5, klasa: 4b, przedmiot: Syst, sala: 18, nauczyciel: 7
Dzien: PIATEK, godz: 11, klasa: 4b, przedmiot: Syst, sala: 18, nauczyciel: 8

chce aby to było posrotowanie na dni, oraz godziny od 0 do 14
cos takiego:

Dzien: PONIEDZIALEK, godz: 4, klasa: 4b, przedmiot: Polski, sala: 21, nauczyciel: 1
Dzien: PONIEDZIALEK, godz: 7, klasa: 4b, przedmiot: Syst, sala: 18, nauczyciel: 6
Dzien: WTOREK, godz: 5, klasa: 4b, przedmiot: Syst, sala: 18, nauczyciel: 7
Dzien: WTOREK, godz: 7, klasa: 4b, przedmiot: Polski, sala: 36, nauczyciel: 2
Dzien: SRODA, godz: 11, klasa: 4b, przedmiot: Polski, sala: 21, nauczyciel: 3
Dzien: CZWARTEK, godz: 1, klasa: 4b, przedmiot: Polski, sala: 18, nauczyciel: 4
Dzien: PIATEK, godz: 9, klasa: 4b, przedmiot: Polski, sala: 27, nauczyciel: 5
Dzien: PIATEK, godz: 11, klasa: 4b, przedmiot: Syst, sala: 18, nauczyciel: 8


Oto skrypt dotyczący wyświetlania

  1. <html>
  2. <table>
  3. <form action=index.php method=POST>
  4. <table width=350 height=100 border=1>
  5. <td>Wybierz klase</td>
  6. <td><select name="klasa">
  7. <option value="4b">4b</option>
  8. <option value="1c">1c</option>
  9. <option value="3d">3d</option>
  10. <option value="4a">4a</option>
  11. <option value="2e">2e</option>
  12. </select></td>
  13. </tr>
  14. <td><input type=submit name=nauczyciel_wpisz value=Wyslij! /></td>
  15. </table>
  16.  
  17.  
  18. <?php
  19. if (isset($_POST['nauczyciel_wpisz'])) {
  20. include("config.php");
  21. for($i=1;$i<4;$i++)
  22. {
  23. include("baza_nauczycieli.php");
  24. $query = "SELECT * FROM ".$nauczyciel." WHERE
  25. dzien LIKE '%".$_POST['klasa']."%' OR
  26. godz LIKE '%".$_POST['klasa']."%' OR
  27. klasa LIKE '%".$_POST['klasa']."%' OR
  28. przedmiot LIKE '%".$_POST['klasa']."%' OR
  29. sala LIKE '%".$_POST['klasa']."%'
  30. ";
  31. //=================================================
  32. $result = mysql_query($query);
  33. if ($result && mysql_num_rows($result) != 0) {
  34. while ($rekord = mysql_fetch_array($result)) {
  35. $id = $rekord['id'];
  36. $dzien = $rekord['dzien'];
  37. $godz = $rekord['godz'];
  38. $klasa = $rekord['klasa'];
  39. $przedmiot = $rekord['przedmiot'];
  40. $sala = $rekord['sala'];
  41.  
  42. echo "Dzien: <b>".$dzien."</b>, godz: <b>".$godz."</b>, klasa: <b>".$klasa."</b>, przedmiot: <b>".$przedmiot."</b>, sala: <b>".$sala."</b>, nauczyciel: <b>".$nauczyciel."</b><br>";
  43. }}}}
  44.  
  45. ?>
Go to the top of the page
+Quote Post
wookieb
post 10.04.2011, 21:12:28
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. ORDER BY FIELD(dzien, 'PONIEDZIALEK', 'WTOREK', 'SRODA', 'CZWARTEK', 'PIATEK'), godz


--------------------
Go to the top of the page
+Quote Post
yevaud
post 10.04.2011, 21:15:46
Post #3





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


  1. ORDER BY dzien, godz

mozesz natrafic na problem z kolejnoscia dni, poniewaz po posortowaniu nazwami kolejnosc bedzie alfabetyczna. Wtedy pomoze Ci http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

edit: rozwiazanie wookieba jest lepsze smile.gif

Ten post edytował yevaud 10.04.2011, 21:16:18
Go to the top of the page
+Quote Post
krzychu91
post 11.04.2011, 11:07:44
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 10.04.2011

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


ale rozchodziło mi sie żeby wynik zapytan był posortowany, a nie sortować baze mysql

Ten post edytował krzychu91 11.04.2011, 11:08:09
Go to the top of the page
+Quote Post
yevaud
post 11.04.2011, 23:03:07
Post #5





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


generalnie rzecz biorac baza zawsze trzyma dane tak jak lubi i nie masz na to duzego wplywu, poniewaz baza traktuje dane jak zbior, a nie ciag danych - kolejnosc nie jest jasno zdefiniowana, a nawet jesli jest to moze ulec zmianie.

Dlatego wszystkie porady tutaj odnosily sie tylko i wylacznie do sortowania wynikow konkretnych zapytan
Go to the top of the page
+Quote Post
szok
post 12.04.2011, 08:39:23
Post #6





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

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


A nie lepiej trzymać w bazie tylko numer dnia?
1 - poniedziałek
2 - wtorek, itp

Wtedy baza zawsze posortuje to idealnie. A przecież dni tygodnia od tak się nie zmienią, więc można je w tablicy PHP przechować.


--------------------
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: 6.06.2024 - 15:15