Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Najlepszy wynik z dwóch tabel
Forum PHP.pl > Forum > Przedszkole
maniek2512
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ć?

kristaps
np. UNION i po problemie. Tutaj jakiś kurs. Całość załatwiasz jednym zapytaniem.
maniek2512
Dobra zmieniłem na coś takiego, teraz tylko jak napisać warunek aby pobierało tylko najlepszy (najkrótszy) czas z tych tabel? Do tego trzeba by było dopisać czy jest to multi czy single.


  1. $result = mysql_query("SELECT nick, marka, model, czas FROM single$trasa UNION SELECT nick, marka, model, czas FROM multi$trasa");
  2.  
  3. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  4. printf ("Nick: %s Marka: %s Model: %s Czas: %s", $row["nick"], $row["marka"], $row["model"], $row["czas"]);
  5. }
  6.  
kristaps
Cytat(maniek2512 @ 25.01.2013, 18:09:42 ) *
teraz tylko jak napisać warunek aby pobierało tylko najlepszy (najkrótszy) czas z tych tabel?

Mówisz o 1 rekordzie? Najkrótsze ustalisz przez ORDER BY, ilość przez LIMIT.
maniek2512
Chodzi mi o to aby pobierało najkrótszy czas z tych 2 tabel dla każdego z graczy.

Np. osoba1 przejechała trasę na single z czasem 1:20 a na multi z czasem 1:18
Wynikiem czego pokaże się tylko ten lepszy czas wraz z informacją czy był to wyścig na multi czy single (opcjonalnie, choć dobrze by było)

Chciałbym aby czasy wyświetlały się dla każdej z osób. Czyli musiałoby porównać czasy z single i multi dla każdego gracza i wypisać lepszy (tj. krótszy).
kristaps
Jeżeli chcesz informować z której tabeli pochodzi rekord, to będziesz musiał zrezygnować z UNION. Przynajmniej mi nie wiadomo nic nt uzyskiwania informacji o tabeli. W takim przypadku najlepiej jak wrócisz do swojego pierwotnego pomysłu, ale dane będziesz pobierał jako tablice (MYSQL_ASSOC), następnie możesz je połączyć by posegregować. No ale może ktoś zna lepszy sposób.
maniek2512
Niestety nie ogarniam jeszcze za bardzo php i mysql i nie poradzę sobie z tym, daltego też pytałem o jakieś przykłady. Większości nauczyłem się właśnie w ten sposób i często jak czegoś nie wiem korzystam z poprzednich rozwiązań. Czegoś takiego nigdy nie robiłem, a do tego ciężko znaleźć jaką kolwiek pomoc w necie na ten temat.

Zupełnie nie wiem jak z tych dwóch tablic wybrać tylko najlepszy czas dla danego gracza. Jeśli ktoś byłby tak uprzejmy i napisał rozwiązanie tego pytania (+ o ile byłaby taka możliwość z jakimś wytłumaczeniem co z czym się je, byłbym dozgonnie wdzięczny).

Będę sam próbował się jeszcze jakoś z tym uporać lecz po całym dniu prób ręce same opadają..


Jak narazie zrobiłem tyle:

  1. <table border="1" align="left" width="100%" >
  2. <!-- Table Header -->
  3. <thead>
  4.  
  5. <tr>
  6.  
  7. <th background='tlo.png'>Nick</th>
  8. <th background='tlo.png'>Czas</th>
  9. <th background='tlo.png'>Marka</th>
  10. <th background='tlo.png'>Model</th>
  11.  
  12. </tr>
  13.  
  14. </thead>
  15.  
  16. <!-- Tabel body-->
  17. <tbody>
  18.  
  19.  
  20.  
  21. <?php
  22. $trasa = $_GET['trasa'];
  23. $tryb = $_GET['tryb'];
  24. $shard = $_GET['shard'];
  25.  
  26.  
  27.  
  28. $sql_conn = mysql_connect('*******', '********_admin', '********');
  29. mysql_select_db('nfswinfo_1');
  30.  
  31. $result = mysql_query("SELECT nick, marka, model, czas FROM single$trasa UNION SELECT nick, marka, model, czas FROM multi$trasa ORDER BY `czas` ASC");
  32. $i=0;
  33. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  34. $data[$i]=$row;
  35. $i++;
  36.  
  37. $nick = '<td>' .$row["nick"]. '</td>';
  38. $marka = '<td>' .$row["marka"]. '</td>';
  39. $model = '<td>' .$row["model"]. '</td>';
  40. $czas = '<td>' .$row["czas"]. '</td>';
  41. echo "<tr align='center'>$nick $marka $model $czas</tr>";
  42. //printf ("Nick: %s Marka: %s Model: %s Czas: %s", $row["nick"], $row["marka"], $row["model"], $row["czas"]);
  43. }
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. // $result1 = mysql_query("SELECT * FROM multi$trasa");
  51.  
  52. //while ($row = mysql_fetch_array($result1, MYSQL_BOTH)) {
  53. // printf ("ID: %s Nick: %s Marka: %s Model: %s Czas: %s", $row[0], $row["nick"], $row["marka"], $row["model"], $row["czas"]);
  54. //}
  55.  
  56. //mysql_free_result($result1);
  57.  
  58.  
  59. ?>
  60.  
  61.  
  62. </tbody>
  63.  
  64.  
  65. </table>



Może można tu zastosować jakoś array_unique z tym, że trzeba było ją posortować i wtedy pokazywało by tylko wyniki, które pokazały się jako pierwsze? Tylko nie wiem, czy można ustawić w array_unique, która wartość ma być unikalna. Mógłby ktoś się wypowiedzieć na ten temat?
kristaps
Możesz zacząć tak:

  1. $stmt1 = mysql_query("SELECT * FROM single WHERE id_gracza = 1 ORDER BY najlepszy_czas DESC");
  2. $sth1 = mysql_fetch_array($tymczasowa, MYSQL_ASSOC);
  3.  
  4. $stmt2 = mysql_query("SELECT * FROM multi WHERE id_gracza = 1 ORDER BY najlepszy_czas DESC");
  5. $sth2 = mysql_fetch_array($tymczasowa2, MYSQL_ASSOC);
  6.  
  7. // W obu przypadkach otrzymasz po jednym rekordzie. Możesz je zapisać do zmiennej i wyświetlić, tak jak pisałeś wyżej.
  8. // echo "Gracz: ".$sth2["login"].". Jego najlepszy wynik (Multiplayer): ".$sth2["najlepszy_czas"].".";
  9.  
  10. $merge = (array_merge_recursive ($sth1 , $sth2)); // Teraz łączysz obie tabele, a następnie sortujesz (array_multisort) według własnych potrzeb.


Edit: Widzę, że wrzuciłeś swoją propozycję. Zostałeś przy UNION, więc pewnie wykorzystasz kolejne zapytanie do wyświetlenia danych z multi i single. Też jakieś wyjście, ale też kolejne zapytanie.

Array_unique po prostu usuwa duplikaty podczas wyświetlania.
maniek2512
Cytat(kristaps @ 25.01.2013, 21:39:01 ) *
Możesz zacząć tak:

  1. $stmt1 = mysql_query("SELECT * FROM single WHERE id_gracza = 1 ORDER BY najlepszy_czas DESC");
  2. $sth1 = mysql_fetch_array($tymczasowa, MYSQL_ASSOC);
  3.  
  4. $stmt2 = mysql_query("SELECT * FROM multi WHERE id_gracza = 1 ORDER BY najlepszy_czas DESC");
  5. $sth2 = mysql_fetch_array($tymczasowa2, MYSQL_ASSOC);
  6.  
  7. // W obu przypadkach otrzymasz po jednym rekordzie. Możesz je zapisać do zmiennej i wyświetlić, tak jak pisałeś wyżej.
  8. // echo "Gracz: ".$sth2["login"].". Jego najlepszy wynik (Multiplayer): ".$sth2["najlepszy_czas"].".";
  9.  
  10. $merge = (array_merge_recursive ($sth1 , $sth2)); // Teraz łączysz obie tabele, a następnie sortujesz (array_multisort) według własnych potrzeb.


Edit: Widzę, że wrzuciłeś swoją propozycję. Zostałeś przy UNION, więc pewnie wykorzystasz kolejne zapytanie do wyświetlenia danych z multi i single. Też jakieś wyjście, ale też kolejne zapytanie.

Array_unique po prostu usuwa duplikaty podczas wyświetlania.




Nie wiem czy do końca zrozumiałeś o co mi chodzi.

Postaram się to lepiej wytłumaczyć.

W bazie danych mam aktualizowane na bierząco (Cron lub po kliknięciu aktualizuj przez użytkownika) czasy do multi i do single dla każdego gracza (jest tam po jednym czasie dla multi i dla single)

Chodzi mi tu tylko o to, że przy pobieraniu danych z bazy (wszystkich graczy) pokazują się czasy z single i z multi, a ja chciałbym aby pokazywany był tylko ten lepszy czas.

Czyli tak jak napisałem w 1 poście:


tabela 1- (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

tabela 2- (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:

tabela 3-razem
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


Co do trybu pomyślałem, że dodam po prostu nowy rekord w którym będzie informacja czy czas jest z trybu single czy z trybu multi, a następie zostanie wyświetlona obok razem z pozostałymi danymi, więc to już najmniejszy problem.


Aby było jeszcze jaśniej, obecnie po pobraniu i posortowaniu danych z bazy wyświetla mi się taka tabelka:





Chciałbym aby wyświetlała się taka jak tabelka 3-razem (wyżej)
kristaps
Teraz już rozumiem.

1. Nie rób tabeli, kolumny, rekordu czy czegokolwiek, by rozróżniać nazwę tabeli. To zła praktyka.
2. Najłatwiej to zrobić nadal przez 2 pytania.

Następnie:

  1. $wynik = '';
  2.  
  3. //pętla
  4.  
  5. if ($row2['czas'] > $row1['czas']){
  6.  
  7. // Tabela Multiplayer.
  8.  
  9. $wynik = '<tr><td>Nick:</td><td>'.$row2['login'].'</td><td>Marka:</td><td>'.$row2['marka'].'</td><td>Czas</td><td>'.$row2['czas'].'</td></tr>';
  10.  
  11. }
  12.  
  13. else{
  14.  
  15. // Tabela Singleplayer.
  16.  
  17. $wynik = '<tr><td>Nick:</td><td>'.$row1['login'].'</td><td>Marka:</td><td>'.$row1['marka'].'</td><td>Czas</td><td>'.$row1['czas'].'</td></tr>';
  18.  
  19. }
  20.  
  21. // koniec pętli
  22. echo '<table>';
  23. echo $wynik;
  24. echo '</table>';



Tabelę dostosuj do własnych potrzeb.
maniek2512
Nie wiem, chyba coś pochrzaniłem.. ;|
Pokazuje mi tylko jeden rekord, a mianowicie: Nick: RYBECKI0902 Marka: PAGANI Czas 0:01:23.075

  1.  
  2.  
  3. <?php
  4. $trasa = $_GET['trasa'];
  5. $tryb = $_GET['tryb'];
  6. $shard = $_GET['shard'];
  7. $wynik = '';
  8.  
  9.  
  10. $sql_conn = mysql_connect('**********', '**********_admin', '*********');
  11. mysql_select_db('nfswinfo_1');
  12.  
  13. $result = mysql_query("SELECT * FROM single$trasa");
  14.  
  15. while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC))
  16.  
  17. $result1 = mysql_query("SELECT * FROM multi$trasa");
  18.  
  19. while ($row1 = mysql_fetch_array($result1, MYSQL_ASSOC))
  20.  
  21.  
  22.  
  23.  
  24.  
  25. //pętla
  26.  
  27. if ($row2["czas"] > $row1["czas"]){
  28.  
  29. // Tabela Multiplayer.
  30.  
  31. $wynik = '<tr><td>Nick:</td><td>'.$row2["nick"].'</td><td>Marka:</td><td>'.$row2["marka"].'</td><td>Czas</td><td>'.$row2["czas"].'</td></tr>';
  32.  
  33. }
  34.  
  35. else{
  36.  
  37. // Tabela Singleplayer.
  38.  
  39. $wynik = '<tr><td>Nick:</td><td>'.$row1["nick"].'</td><td>Marka:</td><td>'.$row1["marka"].'</td><td>Czas</td><td>'.$row1["czas"].'</td></tr>';
  40.  
  41. }
  42.  
  43. // koniec pętli
  44. echo '<table>';
  45. echo $wynik;
  46. echo '</table>';
  47.  
  48. ?>
kristaps
Bo nie wrzuciłeś tego w żadną pętlę. Dlatego zapytanie wykonane zostało tylko raz. Ok, założyłem, że masz tabelę z graczami:

  1. <?php
  2.  
  3. $trasa = $_GET['trasa'];
  4. $tryb = $_GET['tryb'];
  5. $shard = $_GET['shard'];
  6.  
  7. $sql_conn = mysql_connect('**********', '**********_admin', '*********');
  8. mysql_select_db('nfswinfo_1');
  9.  
  10. $result = mysql_query("SELECT id FROM gracze");
  11. $wynik = '';
  12. while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC)){
  13.  
  14. $user = $row["id"];
  15.  
  16. $result = mysql_query("SELECT * FROM single$trasa WHERE login = $user ORDER BY czas");
  17. $row2 = mysql_fetch_array($result, MYSQL_ASSOC);
  18.  
  19. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE login = $user ORDER BY czas");
  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["login"]."</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["login"]."</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>";
  40. ?>


Pętla wykona się tyle razy, ile masz użytkowników w bazie. Równie dobrze możesz dać tam pętlę for, czy inną.
maniek2512
W bazie danych mam nazwy tras w nich mam rekordy, np:

multi39:

id
nick
marka
model
czas
ban

Z tej bazy pobierane są wszystkie dane potrzebne do wyświetlenia czasów łącznie z nickiem gracza.


edit:///

Zrobiłem coś takiego:

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


lecz nie wiedzieć czemu zwraca to taki wynik:

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

kristaps
Dzieje się tak pewnie z powodu braku jakiekolwiek warunku w zapytaniu. Sprawdź taki kod:

  1. <?php
  2.  
  3. $trasa = $_GET['trasa'];
  4. $tryb = $_GET['tryb'];
  5. $shard = $_GET['shard'];
  6.  
  7. $sql_conn = mysql_connect('**********', '**********_admin', '*********');
  8. mysql_select_db('nfswinfo_1');
  9.  
  10. $result = mysql_query("SELECT id FROM multi$trasa");
  11. $wynik = '';
  12. while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC)){
  13.  
  14. $user = $row["id"];
  15.  
  16. $result = mysql_query("SELECT * FROM single$trasa WHERE id = $user ORDER BY czas DESC");
  17. $row2 = mysql_fetch_array($result, MYSQL_ASSOC);
  18.  
  19. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE id = $user ORDER BY czas DESC");
  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["login"]."</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["login"]."</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>";
  40. ?>


Tylko nie usuwaj warunków i wklej co otrzymałeś.
maniek2512
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. }}
kristaps
Zmień

$wynik = '<tr><td>Nick ...

na

$wynik .= '<tr><td>Nick ...

W obu warunkach.
maniek2512
Po zmianie na
  1. $wynik .= '


mam coś takiego:

Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: JOERG1966 Marka: MCLAREN Czas 0:01:09.435
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: 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: 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
kristaps
  1. $result3 = mysql_query("SELECT nick FROM CHICANE");


To zapytanie nie zwraca duplikatów? Trochę to dziwne, docelowo powinieneś pobrać użytkownika, następnie dane i porównać w warunku if. Czy mniejszy czy większy - dopisać do tabeli. Kropka.
maniek2512
Cytat(kristaps @ 26.01.2013, 13:22:01 ) *
  1. $result3 = mysql_query("SELECT nick FROM CHICANE");


To zapytanie nie zwraca duplikatów? Trochę to dziwne, docelowo powinieneś pobrać użytkownika, następnie dane i porównać w warunku if. Czy mniejszy czy większy - dopisać do tabeli. Kropka.



To zapytanie zwraca dokładnie coś takiego:

MANIEK2512PL
JOERG1966
RYBECKI0902
DELECTAMENTI
BLACKSHADOW849
kristaps
Problem pewnie polega na tym, że nie każdy rozgrywał single i multi.

  1. if ($czas1 > $czas2){
  2.  
  3. // Tabela Multiplayer.
  4.  
  5. $wynik = '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  6.  
  7. }
  8.  
  9. elseif ($czas1 < $czas2){
  10.  
  11. // Tabela Singleplayer.
  12.  
  13. $wynik = '<tr><td>Nick:</td><td>'.$nick1.'</td><td>Marka:</td><td>'.$marka1.'</td><td>Czas</td><td>'.$czas1.'</td></tr>';
  14.  
  15. }
  16.  
  17. else { echo "Brak któregoś z czasów"; }


Co teraz Ci się wyświetli?
maniek2512
Cytat(kristaps @ 26.01.2013, 13:29:24 ) *
Problem pewnie polega na tym, że nie każdy rozgrywał single i multi.

  1. if ($czas1 > $czas2){
  2.  
  3. // Tabela Multiplayer.
  4.  
  5. $wynik = '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  6.  
  7. }
  8.  
  9. elseif ($czas1 < $czas2){
  10.  
  11. // Tabela Singleplayer.
  12.  
  13. $wynik = '<tr><td>Nick:</td><td>'.$nick1.'</td><td>Marka:</td><td>'.$marka1.'</td><td>Czas</td><td>'.$czas1.'</td></tr>';
  14.  
  15. }
  16.  
  17. else { echo "Brak któregoś z czasów"; }


Co teraz Ci się wyświetli?



Dalej to samo ;/ Spróbuję ręcznie dodać jakiś czas i w ten sposób sprawdzić czy to tu jest ten problem.

Dodałem czas BLACKSHADOW do multi i teraz pokazuje się dobrze z tym, że nie wiedzieć czemu, ale np. DELECTAMENTI też nie ma jednego czasu, a go pokazuje dobrze.
kristaps
Problemem pewnie może być też to, że jest wiele rekordów z danym nickiem. Spróbuj tak:

  1. SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1
  2. SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1


Plus to co ostatnio dodałem (zapomniałem tam o kropkach ".=")
maniek2512
Cytat(kristaps @ 26.01.2013, 13:38:50 ) *
Problemem pewnie może być też to, że jest wiele rekordów z danym nickiem. Spróbuj tak:

  1. SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1
  2. SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1


Plus to co ostatnio dodałem (zapomniałem tam o kropkach ".=")



Usunąłęm jego jeden czas ponownie i zrobiłem tak jak napisałeś, wynikiem tego jest:

Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: JOERG1966 Marka: MCLAREN Czas 0:01:09.435
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: 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: 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

Może trzeba by było dodać warunek, że jeśli nie ma czasu w jednej lub drugiej tabeli dla danego gracza to ten czas po prostu wypisuje bez porównywania.

No ale i tak dla mnie dziwne jest to, że gracz DELECTAMENTI ma też w jednym trybie czas i jego pokazuje normalnie, a gracza BLACKSHADOW nie ma, za co jest RYBECKI dwa razy

zmieniłem to:
  1. // koniec pętli
  2. echo '<table>';
  3. echo $wynik;
  4. echo '</table>';
  5.  
  6. }}

na to:
  1.  
  2. }}
  3. // koniec pętli
  4. echo '<table>';
  5. echo $wynik;
  6. echo '</table>';
  7.  
  8.  


Przez co mam teraz tak (więc powtarzanie rozwiązane biggrin.gif ):
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
kristaps
Możesz wkleić cały kod?
maniek2512
Cytat(kristaps @ 26.01.2013, 13:51:34 ) *
Możesz wkleić cały kod?


Proszę:

  1. <?php
  2.  
  3. $trasa = $_GET['trasa'];
  4. $tryb = $_GET['tryb'];
  5. $shard = $_GET['shard'];
  6. $wynik = '';
  7.  
  8. $sql_conn = mysql_connect('**********', '**********', '***********');
  9. mysql_select_db('nfswinfo_1');
  10.  
  11. $result3 = mysql_query("SELECT nick FROM CHICANE");
  12.  
  13. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  14.  
  15. $user = $row3["nick"];
  16.  
  17.  
  18.  
  19.  
  20. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1");
  21.  
  22. while ($row2 = mysql_fetch_array($result, MYSQL_ASSOC)){
  23. $czas2 = $row2["czas"];
  24. $nick2 = $row2["nick"];
  25. $marka2 = $row2["marka"];
  26.  
  27.  
  28.  
  29. }
  30.  
  31. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1");
  32.  
  33. while ($row1 = mysql_fetch_array($result1, MYSQL_ASSOC)){
  34.  
  35. $czas1 = $row1["czas"];
  36. $nick1 = $row1["nick"];
  37. $marka1 = $row1["marka"];
  38.  
  39. if ($czas1 > $czas2){
  40.  
  41. // Tabela Multiplayer.
  42.  
  43. $wynik .= '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  44.  
  45. }
  46.  
  47. elseif ($czas1 < $czas2){
  48.  
  49. // Tabela Singleplayer.
  50.  
  51. $wynik .= '<tr><td>Nick:</td><td>'.$nick1.'</td><td>Marka:</td><td>'.$marka1.'</td><td>Czas</td><td>'.$czas1.'</td></tr>';
  52.  
  53. }
  54.  
  55. else {
  56. echo "Brak któregoś z czasów";
  57. }
  58. }}
  59. // koniec pętli
  60. echo '<table>';
  61. echo $wynik;
  62. echo '</table>';
  63.  
  64.  
  65. ?>
kristaps
Miałeś warunki w dolnej pętli z zapytaniem o trasy multi, a powinny być tylko w głównej pętli. Sprawdź ten kod:

  1. <?php
  2.  
  3. $trasa = $_GET['trasa'];
  4. $tryb = $_GET['tryb'];
  5. $shard = $_GET['shard'];
  6.  
  7. $sql_conn = mysql_connect('**********', '**********', '***********');
  8. mysql_select_db('nfswinfo_1');
  9.  
  10. $result3 = mysql_query("SELECT nick FROM CHICANE");
  11.  
  12. $wynik = '';
  13.  
  14. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  15.  
  16. $user = $row3["nick"];
  17.  
  18. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1");
  19. $row2 = mysql_fetch_array($result);
  20.  
  21. $czas2 = $row2["czas"];
  22. $nick2 = $row2["nick"];
  23. $marka2 = $row2["marka"];
  24.  
  25.  
  26. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1");
  27. $row1 = mysql_fetch_array($result1);
  28.  
  29. $czas1 = $row1["czas"];
  30. $nick1 = $row1["nick"];
  31. $marka1 = $row1["marka"];
  32.  
  33.  
  34. if ($czas1 > $czas2){
  35.  
  36. // Tabela Multiplayer.
  37.  
  38. $wynik .= '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  39.  
  40. }
  41.  
  42. elseif ($czas1 < $czas2){
  43.  
  44. // Tabela Singleplayer.
  45.  
  46. $wynik .= '<tr><td>Nick:</td><td>'.$nick1.'</td><td>Marka:</td><td>'.$marka1.'</td><td>Czas</td><td>'.$czas1.'</td></tr>';
  47.  
  48. }
  49.  
  50. else {
  51.  
  52. echo "Brak któregoś z czasów";
  53.  
  54. }
  55.  
  56. // koniec pętli
  57.  
  58. echo '<table>';
  59. echo $wynik;
  60. echo '</table>';
  61.  
  62.  
  63. }
  64. ?>
maniek2512
Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: MANIEK2512PL Marka: PAGANI Czas 0:01:17.463
Nick: JOERG1966 Marka: MCLAREN Czas 0:01:09.435
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: 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: Marka: Czas
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: Marka: Czas
Nick: Marka: Czas


Czyli lipa ;/
kristaps
Zamień:

  1. $wynik = '';
  2. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  3. $user = $row3["nick"];

na:
  1. $wynik = '';
  2. $petla = 0;
  3. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  4. $user = $row3["nick"];
  5. $petla = $petla + 1;


to:
  1. echo '<table>';
  2. echo $wynik;
  3. echo '</table>';

na:
  1. echo '<table>';
  2. echo $wynik;
  3. echo '</table>';
  4.  
  5. echo '<h1>' . $petla . '</hi>';


Następnie napisz ile razy wykonała się pętla (liczba pod tabelą).
maniek2512


  1. <?php
  2.  
  3. $trasa = $_GET['trasa'];
  4. $tryb = $_GET['tryb'];
  5. $shard = $_GET['shard'];
  6.  
  7.  
  8. $sql_conn = mysql_connect('*********', '*********', '**********');
  9. mysql_select_db('nfswinfo_1');
  10.  
  11. $result3 = mysql_query("SELECT nick FROM CHICANE");
  12.  
  13. $wynik = '';
  14. $petla = 0;
  15. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  16. $user = $row3["nick"];
  17. $petla = $petla + 1;
  18.  
  19. $user = $row3["nick"];
  20.  
  21. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1");
  22. $row2 = mysql_fetch_array($result);
  23.  
  24. $czas2 = $row2["czas"];
  25. $nick2 = $row2["nick"];
  26. $marka2 = $row2["marka"];
  27.  
  28.  
  29. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas ASC LIMIT 1");
  30. $row1 = mysql_fetch_array($result1);
  31.  
  32. $czas1 = $row1["czas"];
  33. $nick1 = $row1["nick"];
  34. $marka1 = $row1["marka"];
  35.  
  36.  
  37. if ($czas1 > $czas2){
  38.  
  39. // Tabela Multiplayer.
  40.  
  41. $wynik .= '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  42.  
  43. }
  44.  
  45. elseif ($czas1 < $czas2){
  46.  
  47. // Tabela Singleplayer.
  48.  
  49. $wynik .= '<tr><td>Nick:</td><td>'.$nick1.'</td><td>Marka:</td><td>'.$marka1.'</td><td>Czas</td><td>'.$czas1.'</td></tr>';
  50.  
  51. }
  52.  
  53. else {
  54.  
  55. echo "Brak któregoś z czasów";
  56.  
  57. }
  58.  
  59. // koniec pętli
  60.  
  61. echo '<table>';
  62. echo $wynik;
  63. echo '</table>';
  64.  
  65. echo '<h1>' . $petla . '</hi>';
  66.  
  67.  
  68. }
  69. ?>



A gdyby zrobić tak, że przy update dodawałby się pusty rekord (z tylko uzupełnionym nickiem) to teoretycznie powinno porównać i problem by zniknął.

Zaraz spróbuję coś takiego wykonać.


Zrobiłem tak jak napisałem z tym, że w czasie wpisałem 9:99:99.999 i działa. Teraz przerobię tylko skrypt do aktualizacji wyników aby dodawało taki rakord i powinno być ok. W razie co jeszcze się odezwę. Wielkie dzięki za pomoc.
kristaps
Ok, podaje błędne wyniki dlatego, że w niektórych przypadkach nie zwraca żadnego czasu do porównania. Na samym początku tematu nie przewidywałem takiej możliwości - wnioskując z posta - a później mi to umknęło. Trzeba tylko nieco bardziej rozbudować warunki, zaczynając od wyłapania czy zapytanie zwraca w ogóle jakiś wynik.

  1. if(mysql_num_rows($result1)==0)
  2. {


Jeżeli gracz nie grał w ogóle w multi, to trzeba zwrócić czas = 00:00:00, a dopiero później porównywać. Nie rozumiem pomysłu z update.
maniek2512
Cytat(kristaps @ 26.01.2013, 15:23:46 ) *
Ok, podaje błędne wyniki dlatego, że w niektórych przypadkach nie zwraca żadnego czasu do porównania. Na samym początku tematu nie przewidywałem takiej możliwości - wnioskując z posta - a później mi to umknęło. Trzeba tylko nieco bardziej rozbudować warunki, zaczynając od wyłapania czy zapytanie zwraca w ogóle jakiś wynik.

  1. if(mysql_num_rows($result1)==0)
  2. {


Jeżeli gracz nie grał w ogóle w multi, to trzeba zwrócić czas = 00:00:00, a dopiero później porównywać. Nie rozumiem pomysłu z update.



Zmieniłem troszkę w bazie danych tj. wcześniej miałem multi tam gdzie miałem single (po prostu miałem to zrobione na odwrót więc to naprawiłem) teraz wynikiem są 3 rekordy (pokazuje tylko tych, którzy jeździli single i multi) czyli pustych nie porównuje. Próbowałem zrobić tak:
  1. elseif ($czas1 == ''){
  2.  
  3. // Tabela Singleplayer.
  4.  
  5. $wynik .= '<tr><td>Nick:</td><td>'.$nick2.'</td><td>Marka:</td><td>'.$marka2.'</td><td>Czas</td><td>'.$czas2.'</td></tr>';
  6.  
  7. }


lecz nic to nie zmieniało. Co do Twojego postu, mógłbyś mi konkretniej napisać co mam zrobić? Czyli gdzie to umieścić:
  1. if(mysql_num_rows($result1)==0)
  2. {

ponieważ nie chciałbym popełnić jakiegoś błędu.

Z góry dzięki
kristaps
Zobacz to:

  1. <?php
  2.  
  3. $trasa = $_GET['trasa'];
  4. $tryb = $_GET['tryb'];
  5. $shard = $_GET['shard'];
  6.  
  7. $sql_conn = mysql_connect('**********', '**********', '***********');
  8. mysql_select_db('nfswinfo_1');
  9.  
  10. $result3 = mysql_query("SELECT nick FROM CHICANE");
  11.  
  12. $wynik = '';
  13.  
  14. while ($row3 = mysql_fetch_array($result3, MYSQL_ASSOC)){
  15.  
  16. $user = $row3["nick"];
  17.  
  18.  
  19. $result = mysql_query("SELECT * FROM single$trasa WHERE nick='$user' ORDER BY czas DESC");
  20. $row2 = mysql_fetch_array($result);
  21.  
  22. $czas2 = $row2["czas"];
  23.  
  24. $result1 = mysql_query("SELECT * FROM multi$trasa WHERE nick='$user' ORDER BY czas DESC");
  25. $row1 = mysql_fetch_array($result1);
  26.  
  27. $czas1 = $row1["czas"];
  28.  
  29.  
  30. if (empty($czas2)){
  31.  
  32. $czas2 = '0:00:00.000';
  33. }
  34.  
  35. if (empty($czas1)){
  36.  
  37. $czas1 = '0:00:00.000';
  38. }
  39.  
  40.  
  41. if ($czas2 < $czas1){
  42.  
  43. $wynik .= '<tr><td>Nick:</td><td>'.$row1["nick"].'</td><td>Czas:</td><td>'.$czas1.'</td><td>Marka:</td><td>'.$row1["marka"].'</td><td>Model:</td><td>'.$row1["model"].'</td><td>Multiplayer</td></tr>';
  44. }
  45.  
  46. elseif ($czas2 > $czas1){
  47.  
  48. $wynik .= '<tr><td>Nick:</td><td>'.$row2["nick"].'</td><td>Czas:</td><td>'.$czas2.'</td><td>Marka:</td><td>'.$row2["marka"].'</td><td>Model:</td><td>'.$row2["model"].'</td><td>Singleplayer</td></tr>';
  49. }
  50.  
  51. else { }
  52.  
  53.  
  54. }
  55.  
  56. echo '<table cellspacing="10" cellpadding="10">';
  57. echo $wynik;
  58. echo '</table>';
  59. ?>
maniek2512
Dzięki wielkie o to mi właśnie chodziło, bardzo mi pomogłeś smile.gif Wielki plus dla Ciebie.
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.