Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie danych w tabeli
maniek2512
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 5.03.2011

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


Otóż mam oto taki kod:

  1. <table class="sortable" border="1" align="left" width="100%" >
  2. <!-- Table Header -->
  3. <thead>
  4.  
  5. <tr>
  6. <th background='tlo.png'>L.P.</th>
  7. <th background='tlo.png'>Nick</th>
  8. <th background='tlo.png'>Marka</th>
  9. <th background='tlo.png'>Model</th>
  10. <th background='tlo.png'>Czas</th>
  11. <th background='tlo.png'>Tryb</th>
  12. </tr>
  13.  
  14. </thead>
  15.  
  16. <!-- Tabel body-->
  17. <tbody>
  18.  
  19.  
  20.  
  21. <?php
  22. $lp= 1;
  23. $trasa = $_GET['trasa'];
  24. $tryb = $_GET['tryb'];
  25. $shard = $_GET['shard'];
  26.  
  27.  
  28.  
  29. $sql_conn = mysql_connect('########', '#####_admin', '#######');
  30. mysql_select_db('nfswinfo_1');
  31.  
  32. $result3 = mysql_query("SELECT nick FROM CHICANE");
  33.  
  34. $wynik = '';
  35.  
  36. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  37.  
  38. $user = $row3["nick"];
  39.  
  40.  
  41. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC");
  42. $row2 = mysql_fetch_array($result);
  43.  
  44. $czas2 = $row2["czas"];
  45.  
  46. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC");
  47. $row1 = mysql_fetch_array($result1);
  48.  
  49. $czas1 = $row1["czas"];
  50.  
  51.  
  52. if (empty($czas2)){
  53.  
  54. $czas2 = '0:00:00.000';
  55. }
  56.  
  57. if (empty($czas1)){
  58.  
  59. $czas1 = '0:00:00.000';
  60. }
  61.  
  62.  
  63. if ($czas2 < $czas1){
  64.  
  65. $wynik .= '<tr align="center"><td>'.$lp++.'</td><td>'.$row1["nick"].'</td><td>'.$row1["marka"].'</td><td>'.$row1["model"].'</td><td>'.$czas1.'</td><td>Multiplayer</td></tr>';
  66. }
  67.  
  68. elseif ($czas2 > $czas1){
  69.  
  70. $wynik .= '<tr align="center"><td>'.$lp++.'</td><td>'.$row2["nick"].'</td><td>'.$row2["marka"].'</td><td>'.$row2["model"].'</td><td>'.$czas2.'</td><td>Singleplayer</td></tr>';
  71. }
  72.  
  73. else { }
  74.  
  75.  
  76. }
  77.  
  78.  
  79. echo $wynik;
  80.  
  81. ?>
  82.  
  83. </tbody> </table>
  84.  
  85.  
  86.  
  87.  



Co zrobić aby wynik był posortowany względem czasu od najkrótszego do najdłuższego?

Obecnie skrypt zwraca wynik:

L.P. Nick Marka Model Czas Tryb
1 MANIEK2512PL PAGANI ZONDA CINQUE 0:01:19.817 Singleplayer
2 JOERG1966 MCLAREN F1 0:01:13.800 Multiplayer
3 RYBECKI0902 PAGANI ZONDA CINQUE 0:01:23.075 Singleplayer
4 DELECTAMENTI PAGANI ZONDA CINQUE 0:01:12.861 Singleplayer
5 BLACKSHADOW849 PAGANI ZONDA CINQUE 0:01:21.805 Singleplayer
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kristaps
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Po pierwsze wyrzuć
  1. array_multisort($tablica, SORT_ASC);
z głównej pętli. Aktualnie sortujesz tablice z każdym wykonaniem pętli - a kompletna jest przecież dopiero po ostatnim pobraniu użytkownika z tabeli chicane. Otrzymujesz dobry wynik, ale zmniejszasz wydajność skryptu. Co do pytania, to żeby wyświetlić całą posortowaną tablicę, musisz użyć kolejnej pętli (poza główną pętlą).

Tym razem bez gotowca (znam każdą linię Twojego skryptu (IMG:style_emoticons/default/wink.gif) ). Spróbuj sam na podstawie tego przykładu:
  1. <?php
  2. $kraje = Array(
  3. 'Europa' => array('Polska', 'Anglia', 'Litwa', 'Francja'),
  4. 'Afryka' => array('Tunezja', 'Egipt', 'RPA', 'Etiopia'),
  5. 'Azja' => array('Chiny', 'Mongolia', 'Japonia', 'Kazachstan')
  6. );
  7.  
  8. echo '<table>';
  9.  
  10. foreach ( $kraje as $kontynent => $kraj )
  11. {
  12. echo '<tr><td width="20%"><b>' . $kontynent . '</b></td>';
  13.  
  14. for ( $i = 0; $i < count($kraj); $i++ )
  15. {
  16. echo '<td width="20%">' . $kraj[$i] . '</td>';
  17. }
  18.  
  19. echo '</tr>';
  20. }
  21.  
  22. echo '</table>';
  23.  
  24. ?>

Tablica jest nieco inna, ale jak wyświetlisz wynik tego skryptu i porównasz z swoją to powinieneś zobaczyć zależność. Jak coś to pytaj ewentualnie doczytaj o foreach i tablicach dwuwymiarowych.

Ten post edytował kristaps 28.01.2013, 02:44:15
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 17.10.2025 - 21:21