Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Początkujący] Jak pobrać dane z dwóch tabel, JOIN
pol1techn1k
post 18.02.2012, 23:05:33
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.02.2012

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


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)
Go to the top of the page
+Quote Post
Kostek.88
post 18.02.2012, 23:17:38
Post #2





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


  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

Ten post edytował Kostek.88 18.02.2012, 23:22:29
Go to the top of the page
+Quote Post
pedro84
post 18.02.2012, 23:19:15
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Poczytaj o JOIN.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
pol1techn1k
post 19.02.2012, 18:55:29
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.02.2012

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


Bardzo dziękuję wszystkim za pomoc! Wszystko ruszyło jak trzeba! Temat można zamknąć
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: 26.06.2025 - 16:08