Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Najlepszy wynik z dwóch tabel
maniek2512
post
Post #1





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

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


Witam ponownie, męczę się z tym cały dzień i nie mogę dojść jak to zrobić. Otóż pobieram sobie dane z bazy z 2 tabel. Potrzebuję aby z tych tabel wyświetlało mi tylko najlepsze wyniki (najkrótszy czas)

To co napisałem:

  1. <?php
  2. $trasa = $_GET['trasa'];
  3. $tryb = $_GET['tryb'];
  4. $shard = $_GET['shard'];
  5.  
  6.  
  7.  
  8. $sql_conn = mysql_connect('**********', '********_admin', '**********');
  9. mysql_select_db('nfswinfo_1');
  10.  
  11. $result = mysql_query("SELECT * FROM single$trasa");
  12.  
  13. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  14. printf ("ID: %s Nick: %s Marka: %s Model: %s Czas: %s", $row[0], $row["nick"], $row["marka"], $row["model"], $row["czas"]);
  15. }
  16.  
  17.  
  18.  
  19.  
  20. $result1 = mysql_query("SELECT * FROM multi$trasa");
  21.  
  22. while ($row = mysql_fetch_array($result1, MYSQL_BOTH)) {
  23. printf ("ID: %s Nick: %s Marka: %s Model: %s Czas: %s", $row[0], $row["nick"], $row["marka"], $row["model"], $row["czas"]);
  24. }
  25.  
  26.  
  27.  
  28. ?>



Wynikiem tego jest:

(single)
ID: 1 Nick: JOERG1966 Marka: MCLAREN Model: F1 Czas: 0:01:13.800
ID: 2 Nick: RYBECKI0902 Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:16.675
ID: 3 Nick: MANIEK2512PL Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:17.463

(multi)
ID: 1 Nick: JOERG1966 Marka: MCLAREN Model: F1 Czas: 0:01:09.435
ID: 2 Nick: DELECTAMENTI Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:12.861
ID: 3 Nick: MANIEK2512PL Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:19.817
ID: 4 Nick: BLACKSHADOW849 Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:21.805
ID: 5 Nick: RYBECKI0902 Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:23.075


Chciałym z tych 2 "tabel" stworzyć 1, która względem powyższych danych wyglądałaby tak:

1. Nick: JOERG1966 Marka: MCLAREN Model: F1 Czas: 0:01:09.435 Tryb: single
2. Nick: DELECTAMENTI Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:12.861 Tryb: multi
3. Nick: RYBECKI0902 Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:16.675 Tryb: single
4. Nick: MANIEK2512PL Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:17.463 Tryb: single
5. Nick: BLACKSHADOW849 Marka: PAGANI Model: ZONDA CINQUE Czas: 0:01:21.805 Tryb: multi


Mógłby mi ktoś podpowiedzieć, podać jakiś przykład jak to zrobić?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
maniek2512
post
Post #2





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

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


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/nfswinfo/public_html/reszta/staty/staty.php on line 17

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/nfswinfo/public_html/reszta/staty/staty.php on line 20

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/nfswinfo/public_html/reszta/staty/staty.php on line 12
Nick: Marka: Czas

  1. while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC)){
  2.  
  3. $user = $row["id"];
  4.  
  5. $result = mysql_query("SELECT * FROM single$trasa WHERE id = $user ORDER BY czas DESC");
  6. $row2 = mysql_fetch_array($result, MYSQL_ASSOC);
  7.  
  8. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE id = $user ORDER BY czas DESC");
  9. $row1 = mysql_fetch_array($result1, MYSQL_ASSOC);




Zrobiłem więc tabelę, w której dodałem wszystkie nicki i zmieniłem na to:

  1. $trasa = $_GET['trasa'];
  2. $tryb = $_GET['tryb'];
  3. $shard = $_GET['shard'];
  4.  
  5. $sql_conn = mysql_connect('*********', '*********_admin', '***********');
  6. mysql_select_db('nfswinfo_1');
  7.  
  8. $result3 = mysql_query("SELECT nick FROM CHICANE")or die('Zapytanie: '.$sql.' --- błąd: '.mysql_error());
  9. $wynik = '';
  10. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  11.  
  12. $user = $row3["nick"];
  13.  
  14. echo $user;
  15.  
  16. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas DESC")or die('Zapytanie: '.$sql.' --- błąd: '.mysql_error());
  17. $row2 = mysql_fetch_array($result, MYSQL_ASSOC);
  18.  
  19. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas DESC")or die('Zapytanie: '.$sql.' --- błąd: '.mysql_error());
  20. $row1 = mysql_fetch_array($result1, MYSQL_ASSOC);
  21.  
  22.  
  23. if ($row2["czas"] > $row1["czas"]){
  24. // Tabela Multiplayer.
  25. $wynik = "<tr><td>Nick:</td><td>".$row2["nick"]."</td><td>Marka:</td><td>".$row2["marka"]."</td><td>Czas</td><td>".$row2["czas"]."</td></tr>";
  26. }
  27.  
  28. else{
  29. // Tabela Singleplayer.
  30. $wynik = "<tr><td>Nick:</td><td>".$row1["nick"]."</td><td>Marka:</td><td>".$row1["marka"]."</td><td>Czas</td><td>".$row1["czas"]."</td></tr>";
  31. }
  32. }
  33.  
  34.  
  35.  
  36.  
  37. echo "<table>";
  38. echo $wynik;
  39. echo "</table>";


Muszę to robić po nicku ponieważ id jest inne w single i multi (dane do mazy wysyłane są w względem miejsca np. osoba która była 1 na wyścigu ma id 1, czyli jeśli na jednym wyścigu w trybie single osoba1 jest 1, a w trybie multi jest 2 ma dwa różne id, a więc zamiast id musiałem dać po nicku)


Niestety pokazuje tylko jeden wynik (dla ostatniej osoby z tabeli- CHICANE)

Nick: BLACKSHADOW849 Marka: PAGANI Czas 0:01:21.805

Czyli znów coś z pętlą jest nie tak.



edit:// Zrobiłem tak, teraz powtarza mi się tylko jeden z rekordów oraz nie wyświetla mi się czas gracza BLACKSHADOW849:
(Może tak być dlatego, że nie każdy jeździł tryb multi i nie każdy jeździł tryb single ? )

Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: JOERG1966 Marka: MCLAREN Czas 0:01:09.435
Nick: RYBECKI0902 Marka: PAGANI Czas 0:01:16.675
Nick: DELECTAMENTI Marka: PAGANI Czas 0:01:12.861
Nick: RYBECKI0902 Marka: PAGANI Czas 0:01:16.675

  1.  
  2. $result3 = mysql_query("SELECT nick FROM CHICANE");
  3. $wynik = '';
  4. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  5.  
  6. $user = $row3["nick"];
  7.  
  8.  
  9.  
  10. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC");
  11.  
  12. while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC)){
  13. $czas2 = $row2["czas"];
  14. $nick2 = $row2["nick"];
  15. $marka2 = $row2["marka"];
  16.  
  17.  
  18.  
  19. }
  20.  
  21. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC");
  22.  
  23. while ($row1 = mysql_fetch_array($result1, MYSQL_ASSOC)){
  24.  
  25. $czas1 = $row1["czas"];
  26. $nick1 = $row1["nick"];
  27. $marka1 = $row1["marka"];
  28.  
  29. if ($czas1 > $czas2){
  30.  
  31. // Tabela Multiplayer.
  32.  
  33. $wynik = '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  34.  
  35. }
  36.  
  37. else{
  38.  
  39. // Tabela Singleplayer.
  40.  
  41. $wynik = '<tr><td>Nick:</td><td>'.$nick1.'</td><td>Marka:</td><td>'.$marka1.'</td><td>Czas</td><td>'.$czas1.'</td></tr>';
  42.  
  43. }
  44.  
  45. // koniec pętli
  46. echo '<table>';
  47. echo $wynik;
  48. echo '</table>';
  49.  
  50. }}


Ten post edytował maniek2512 26.01.2013, 13:09:10
Go to the top of the page
+Quote Post

Posty w temacie
- maniek2512   [MySQL][PHP]Najlepszy wynik z dwóch tabel   25.01.2013, 17:35:13
- - kristaps   np. UNION i po problemie. Tutaj jakiś kurs. Całość...   25.01.2013, 17:45:22
- - maniek2512   Dobra zmieniłem na coś takiego, teraz tylko jak na...   25.01.2013, 18:09:42
|- - kristaps   Cytat(maniek2512 @ 25.01.2013, 18:09...   25.01.2013, 18:18:21
- - maniek2512   Chodzi mi o to aby pobierało najkrótszy czas z tyc...   25.01.2013, 18:25:37
- - kristaps   Jeżeli chcesz informować z której tabeli pochodzi ...   25.01.2013, 18:40:43
- - maniek2512   Niestety nie ogarniam jeszcze za bardzo php i mysq...   25.01.2013, 19:13:59
- - kristaps   Możesz zacząć tak: [PHP] pobierz, plaintext $stmt...   25.01.2013, 21:39:01
|- - maniek2512   Cytat(kristaps @ 25.01.2013, 21:39:01...   25.01.2013, 21:53:57
- - kristaps   Teraz już rozumiem. 1. Nie rób tabeli, kolumny, ...   25.01.2013, 22:20:48
- - maniek2512   Nie wiem, chyba coś pochrzaniłem.. ;| Pokazuje mi ...   25.01.2013, 22:47:22
- - kristaps   Bo nie wrzuciłeś tego w żadną pętlę. Dlatego zapyt...   25.01.2013, 23:10:03
- - maniek2512   W bazie danych mam nazwy tras w nich mam rekordy, ...   25.01.2013, 23:30:47
- - kristaps   Dzieje się tak pewnie z powodu braku jakiekolwiek ...   26.01.2013, 03:55:28
- - maniek2512   Warning: mysql_fetch_array(): supplied argument is...   26.01.2013, 12:50:54
- - kristaps   Zmień $wynik = '<tr><td>Nick...   26.01.2013, 13:10:45
- - maniek2512   Po zmianie na [PHP] pobierz, plaintext $wynik .= '...   26.01.2013, 13:16:13
- - kristaps   [SQL] pobierz, plaintext $result3 = mysql_query...   26.01.2013, 13:22:01
|- - maniek2512   Cytat(kristaps @ 26.01.2013, 13:22:01...   26.01.2013, 13:24:13
- - kristaps   Problem pewnie polega na tym, że nie każdy rozgryw...   26.01.2013, 13:29:24
|- - maniek2512   Cytat(kristaps @ 26.01.2013, 13:29:24...   26.01.2013, 13:32:40
- - kristaps   Problemem pewnie może być też to, że jest wiele re...   26.01.2013, 13:38:50
|- - maniek2512   Cytat(kristaps @ 26.01.2013, 13:38:50...   26.01.2013, 13:43:54
- - kristaps   Możesz wkleić cały kod?   26.01.2013, 13:51:34
|- - maniek2512   Cytat(kristaps @ 26.01.2013, 13:51:34...   26.01.2013, 13:53:34
- - kristaps   Miałeś warunki w dolnej pętli z zapytaniem o trasy...   26.01.2013, 14:04:52
- - maniek2512   Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463 ...   26.01.2013, 14:09:17
- - kristaps   Zamień: [PHP] pobierz, plaintext $wynik = '';whi...   26.01.2013, 14:24:37
- - maniek2512   [PHP] pobierz, plaintext <?php  $trasa...   26.01.2013, 14:29:52
- - kristaps   Ok, podaje błędne wyniki dlatego, że w niektórych ...   26.01.2013, 15:23:46
|- - maniek2512   Cytat(kristaps @ 26.01.2013, 15:23:46...   26.01.2013, 15:41:25
- - kristaps   Zobacz to: [PHP] pobierz, plaintext <?php...   27.01.2013, 00:34:22
- - maniek2512   Dzięki wielkie o to mi właśnie chodziło, bardzo mi...   27.01.2013, 01:39:53


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

 



RSS Aktualny czas: 25.12.2025 - 22:41