Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] problem z zapytaniem w pdo
Forum PHP.pl > Forum > Przedszkole
-kalis-
Mam problem jak wydobyć dane z 3 tabel
mam 3 tabele :
1) klient

i posiada pola
id_klient
nazwa_klient
grupa_nazwa
firma
data_przejecia

2)grupa_klient
i posiada pola
id_grupa
nazwa_grupa


pole id_grupa łączy się z polem grupa_nazwa z tabeli klient

3)klucz
id_klucz
id_typ_klucz
ilosc_klucz
id_klient

tabela klucz jest zbiorem kluczy jaki ma dany klient (laczenie z tabela klient)
it_typ_klucz - okresla typ klucza
ilosc_klucz - okresla ile kluczy jest tego typu
moze byc tak ze klient ma rozne typy kluczy


i teraz mam taki kod :

  1. $firma_obslugujaca=isset($_GET['firma_obslugujaca']) ? $_GET['firma_obslugujaca'] :0;
  2. $pokaz=isset($_GET['pokaz']) ? $_GET['pokaz'] :0;
  3. $sortuj=isset($_GET['sort']) ? $_GET['sort'] :0;
  4. if (($firma_obslugujaca>2) || ($sortuj>3))
  5. {
  6. $txt.="<div class=\"div_okienko\"><h3>Nieprawidłowa wartość</h3></div>";
  7. header('Refresh: 2;ewidencja.php?funkcja=wyswietl');
  8. }
  9. $sql='SELECT a.* FROM klient a';
  10.  
  11. switch($firma_obslugujaca)
  12. {
  13. case 0:
  14. $sql.=' WHERE a.id_klient>0';
  15. break;
  16. case 1:
  17. $sql.=' WHERE a.firma="firma 1"';
  18. break;
  19. case 2:
  20. $sql.=' WHERE a.firma="firma 2"';
  21. break;
  22. }
  23. if ($pokaz>0) $sql.=' AND a.grupa_klient= :pokaz';
  24. switch($sortuj)
  25. {
  26. case 0:
  27. break;
  28. case 1:
  29. $sql.=' ORDER BY a.data_przejecia';
  30. break;
  31. case 2:
  32. $sql.=' ORDER BY nazwa_klient';
  33. break;
  34. case 3:
  35. $sql.=' ORDER BY grupa_klient';
  36. break;
  37. }
  38. $txt.="sql=".$sql;
  39. //sortowanie
  40. $stmt = $pdo -> prepare('SELECT id_grupa,nazwa_grupa FROM grupa_klient ORDER BY nazwa_grupa');
  41. $stmt -> execute();
  42. $txt.="<form method='GET' action='ewidencja.php'>
  43. <input type='hidden' name='funkcja' value='wyswietl'>
  44. Wybierz filtr:</br>
  45. Firma obsługująca:
  46. <select name='firma_obslugujaca'>
  47. <option value=0>Wszystkie</>
  48. <option value=1>Firma 1</>
  49. <option value=2>Firma 2</>
  50. </select>
  51. Pokaż tylko
  52. <select name='pokaz'>
  53. <option value=0>Wszystkie</>";
  54. while ($row=$stmt ->fetch())
  55. {
  56. $id_grupa=$row['id_grupa'];
  57. $nazwa_grupa=$row['nazwa_grupa'];
  58. $txt.="<option value='$id_grupa'>$nazwa_grupa</option>";
  59. }
  60. $stmt->closeCursor();
  61. $txt.="</select>
  62. Sortuj wg
  63. <select name='sort'>
  64. <option value=0>BraK</>
  65. <option value=1>Daty dodania</>
  66. <option value=2>Nazwy klienta</>
  67. <option value=3>Grupy klienta</>
  68. </select>
  69. <input type='submit' value='Zatwierdz'>
  70. </form>";
  71. //wykonanie zapytania
  72. $sql_query=$pdo->prepare($sql);
  73. $sql_query->bindValue(':pokaz', $pokaz, PDO::PARAM_INT);
  74. $sql_query -> execute();
  75. $count_wyswietl = $sql_query -> rowCount();
  76. echo $count_wyswietl;
  77.  
  78. //tabela
  79. $txt.="<TABLE width='95%'>
  80. <TR>
  81. <TD>Lp.</TD>
  82. <TD>Nazwa klienta</TD>
  83. <TD>Grupa</TD>
  84. <TD>Firma Obsługująca</TD>
  85. <TD>Data przejęcia</TD>
  86. <TD>Ilość kluczy</TD>
  87. </TR>";
  88. while ($row=$sql_query ->fetch())
  89. {
  90. //zlaczenie tabel
  91.  
  92. $lp++;
  93. $id_klient=$row['id_klient'];
  94. $nazwa_klient=$row['nazwa_klient'];
  95. $firma=$row['firma'];
  96. $data_przejecia=$row['data_przejecia'];
  97. $sql_zlaczenie=$pdo->prepare('SELECT b.nazwa_grupa FROM klient a, grupa_klient b WHERE a.id_klient= :id_klient AND a.grupa_klient=b.id_grupa');
  98. $sql_zlaczenie->bindValue(':id_klient', $id_klient, PDO::PARAM_INT);
  99. $sql_zlaczenie -> execute();
  100. while ($row2=$sql_query ->fetch())
  101. {
  102. $nazwa_grupa=$row2['nazwa_grupa'];
  103. $txt.="<TR>
  104. <TD>$lp</TD>
  105. <TD><a href='ewidencja.php?funkcja=pokaz_klient&id=$id_klient'>$nazwa_klient</a></TD>
  106. <TD>$nazwa_grupa</TD>
  107. <TD>$firma</TD>
  108. <TD>$data_przejecia</TD>
  109. <TD>$ilosc_kluczy</TD>
  110. </TR>";
  111. }
  112. }
  113. $txt.="</TABLE>";


no i nie działa mi to : $sql_zlaczenie=$pdo->prepare('SELECT b.nazwa_grupa FROM klient a, grupa_klient b WHERE a.id_klient= :id_klient AND a.grupa_klient=b.id_grupa');

pytanie moje jak wydobyc nazwe_grupy oraz zliczyc ilosc calkowita kluczy danego klienta
-kalis-
i co nie umie mi pomoc? biggrin.gif
aras785
JOIN
Gość
probowalem juz i pod sql zapytanie zwraca mi poprawnie tyle ze pod pdo juz niestety nie smile.gif
wypisuje mi tego samego klienta*liczbe ogolna *liczbe nazw_grup
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.