Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Początkujący] Jak pobrać dane z dwóch tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
pol1techn1k
Witam! Mam taki oto problem. Posiadam dwie tabele:
W pierwszej z nich: druzyny posiadam następujące pola:
Pierwsza z nich druzyny, która posiada następujące pola: id, nazwa, mail
Druga to tabela zawodnicy, która posiada następujące pola: id, imie, nazwisko, plec, dzien, miesiac, rok, druzyna, miasto, ulica, telefon, mail, tekst, zawod.
W tabeli zawodnicy, przypisuję do pola druzyna, id z tabeli druzyny. (trochę to zawiłe zdanie)
Przykładowo:
Tabela drużyny wyglada tak:
1,Mistrzowie, e-mail_kapitana1@php.pl
2,Wygrani, e-mail_kapitana2@php.pl

Tabela zawodnicy wygląda tak:
1,Adam, Adamowy, M, 2,3,1976,2,Łódź,Zamkowa 12,500501502,e_mail_zawodnika1@php.pl, dowolny tekst na koszulce, tokarz
2,Piotr, Piotrowy, M, 1,2,1996,1,Łódź,Zamkowa 14,510501502,e_mail_zawodnika2@php.pl, dowolny tekst na koszulce, rolnik
itd...
Pogrubiłem istotne pole gdzie w tabeli zawodnicy przechowuję ID drużyny tabeli drużyny.
Podczas wyświetlania listy zawodników chciałbym aby zamiast wartości 1, 2, itd. wyświetlana została nazwa tej drużyny. Dokładnie tak:
1,Adam, Adamowy, M, 2,3,1976,Wygrani,Łódź,Zamkowa 12,500501502,e_mail_zawodnika1@php.pl, dowolny tekst na koszulce, tokarz

Do tej pory, próbowałem użyć kodu:
  1. <?php
  2. // łączymy się z bazą danych
  3. $connection = @mysql_connect('localhost', 'test', 'test')
  4. or die('Brak połączenia z serwerem MySQL');
  5. $db = @mysql_select_db('turniej', $connection)
  6. or die("SQL error: ".mysql_error());
  7. mysql_query("SET NAMES 'utf8'");
  8.  
  9. //zapytanie o zwrot z tabeli
  10. $zawodnicy = mysql_query("SELECT zawodnicy.id, zawodnicy.imie, zawodnicy.nazwisko, zawodnicy.plec, zawodnicy.dzien, zawodnicy.miesiac, zawodnicy.rok, zawodnicy.druzyna, zawodnicy.miasto, zawodnicy.ulica, zawodnicy.telefon, zawodnicy.mail, zawodnicy.tekst, zawodnicy.zawod FROM zawodnicy JOIN druzyny ON zawodnicy.druzyna = druzyny.nazwa") or die("SQL error: ".mysql_error());
  11. echo $zawodnicy;
  12. echo "<br>";
  13. echo mysql_num_rows($zawodnicy);
  14. echo mysql_fetch_assoc($zawodnicy);
  15.  
  16. if(mysql_num_rows($zawodnicy) > 0) {
  17. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  18. echo "<table cellpadding=\"2\" border=1>";
  19. echo "<tr><td>ID</td><td>Nazwa drużyny</td><td>E-mail kapitana</td><td>Zarządzaj!</td>";
  20. while($r = mysql_fetch_assoc($zawodnicy)) {
  21.  
  22. echo "<tr>";
  23. echo "<td>".$r['zawodnicy.id']."</td>";
  24. echo "<td>".$r['imie']."</td>";
  25. echo "<td>".$r['nazwisko']."</td>";
  26. echo "<td>".$r['dzien']."-".$r['miesiac']."-".$r['rok']."</td>";
  27. echo "<td>".$r['rok']."</td>";
  28. echo "<td>".$r['nazwa']."</td>";
  29. echo "<td>".$r['druzyna']."</td>";
  30. echo "<td>".$r['mail']."</td>";
  31. echo "<td>".$r['mail']."</td>";
  32. echo "<td>".$r['mail']."</td>";
  33. echo "<td>".$r['mail']."</td>";
  34. echo "<td>".$r['mail']."</td>";
  35. echo "<td>".$r['mail']."</td>";
  36. echo "<td>".$r['mail']."</td>";
  37. echo "<td>".$r['mail']."</td>";
  38. echo "<td>".$r['mail']."</td>";
  39. echo "<td>".$r['mail']."</td>";
  40. echo "<td>".$r['mail']."</td>";
  41. echo "<td>".$r['mail']."</td>";
  42. echo "<td>".$r['mail']."</td>";
  43. echo "<td>".$r['mail']."</td>";
  44. echo "<td>".$r['mail']."</td>";
  45. echo "<td>".$r['mail']."</td>";
  46. echo "<td>".$r['mail']."</td>";
  47. echo "<td>".$r['mail']."</td>";
  48.  
  49. // echo '<td><a href="edytuj_druzyne.php?id='.$r['id'].'">Aktualizuj pola</a></td>';
  50. // echo "</tr>";
  51. }
  52. echo "</table>";
  53. //}
  54.  
  55. ?>
  56.  


Co ciekawe: echo $zawodnicy - zwraca 4, echo mysql_num_rows($zawodnicy); zwraca 0, echo mysql_fetch_assoc($zawodnicy); nic nie zwraca. Przyznam szczerze że próbowałem już na 100 tyś sposobów więc w kodzie mogą pojawić się błędy od if-a, tak wiec proszę się nie denerwować od samego początku.
Z góry dziękuję za podpowiedź, zapytanie wydaje się być generowane prawidłowo, jednak nie chce wejść do if-a.
Jeżeli mógłbym prosić o podanie przykładu jak wyświetlić te dane będę bardo wdzięczny!

Pozdrawiam
Jasiek (pol1techn1k)
Kostek.88
  1. SELECT zawodnicy.*, druzyny.* FROM zawodnicy LEFT JOIN druzyny ON zawodnicy.druzyna = druzyny.id


EDIT: dzien, miesiac, rok możesz spokojnie zamienić na pole data_urodzenia (typ INT) i wrzucać format unixowy. Odsyłam do tematu http://forum.php.pl/index.php?showtopic=188450&hl=date i mojego posta
pedro84
Poczytaj o JOIN.
pol1techn1k
Bardzo dziękuję wszystkim za pomoc! Wszystko ruszyło jak trzeba! Temat można zamknąć
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.