Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie złożone JOIN ON
Panicz74
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 28.08.2015

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


Witam,

Mam taki problem. Musze przerobić swoje zapytania złożone na formę z INNER JOIN (poniekąd przy większej liczbie rekordów serwer się zawiesi). Zapytanie takie, które zrobiłem zwraca wszystkie wyniki:

  1. "SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o
  2. JOIN users u ON u.id_usera = o.id_usera
  3. JOIN branza b ON b.id_branzy = o.id_branzy
  4. JOIN umowa i ON i.id_umowy = o.id_umowy
  5. JOIN lokalizacja l ON l.id_lok = o.id_lok"


A pojawiają się schody bo muszę teraz wybierać poszczególne elementy i średnio mi to wychodzi. Takie zapytanie również zwraca mi wszystkie wyniki zamiast tylko tych podanych w GET:

  1. "SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o, branza AS b
  2. JOIN users u ON u.id_usera = o.id_usera
  3. JOIN branza b ON b.id_branzy = o.id_branzy
  4. JOIN umowa i ON i.id_umowy = o.id_umowy
  5. JOIN lokalizacja l ON l.id_lok = o.id_lok
  6. WHERE b.nazwa_branzy = '{$_GET['nazwa']}'"


Czy ktoś może mi podpowiedzieć jak przerobić to zapytanie aby wyciągnąć tylko te elementy podane w GET??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Panicz74
post
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 28.08.2015

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


Dziwne bo zapytanie w PhpMyAdmin ruszylo bez problemu. Skrypt niestety nie działa:

Część skryptu odpowiedzialna za to zapytanie:
  1. if($_GET['nazwa'] =="elektromechanik" || $_GET['nazwa'] =="murarz" || $_GET['nazwa'] =="slusarz" || $_GET['nazwa'] =="kowal" && $_GET['umowa'] == "---" && $_GET['lokalizacja'] == "---")
  2. {
  3. try
  4. {
  5. $pdo = new PDO($pol, $user, $pass);
  6. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  7. if(isset($_GET['nazwa']))
  8. {
  9. $stmt = $pdo->query("SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o
  10. JOIN users u ON u.id_usera = o.id_usera
  11. JOIN branza b ON b.id_branzy = o.id_branzy
  12. JOIN umowa i ON i.id_umowy = o.id_umowy
  13. JOIN lokalizacja l ON l.id_lok = o.id_lok
  14. WHERE b.nazwa_branzy = '{$_GET['nazwa']}'");
  15. echo '<ul>';
  16. foreach($stmt as $row)
  17. {
  18. echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].'</li>';
  19. }
  20. $stmt->closeCursor();
  21. echo '</ul>';
  22. //print_r($_GET);
  23. }
  24. }
  25. catch(PDOException $e)
  26. {
  27. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  28. }
  29. }


Cały index.php:
  1. <?php
  2.  
  3. require_once 'connect.php';
  4. // SELECT pusty - pokaż wszystko
  5. if(empty($_GET['nazwa']) || $_GET['nazwa'] == "---" || $_GET['umowa'] == "---" || $_GET['lokalizacja'] == "---")
  6. {
  7. try
  8. {
  9. $pdo = new PDO($pol, $user, $pass);
  10. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  11.  
  12. $stmt = $pdo->query("SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o
  13. JOIN users u ON u.id_usera = o.id_usera
  14. JOIN branza b ON b.id_branzy = o.id_branzy
  15. JOIN umowa i ON i.id_umowy = o.id_umowy
  16. JOIN lokalizacja l ON l.id_lok = o.id_lok");
  17. echo '<ul>';
  18. foreach($stmt as $row)
  19. {
  20. echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].'</li>';
  21. }
  22. $stmt->closeCursor();
  23. echo '</ul>';
  24. //print_r($_GET);
  25.  
  26. }
  27. catch(PDOException $e)
  28. {
  29. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  30. }
  31. }
  32.  
  33. else if(!empty($_GET['nazwa']))
  34. {
  35. // SELECT nazwa - pokaż wszystko po nazwie
  36. if($_GET['nazwa'] =="elektromechanik" || $_GET['nazwa'] =="murarz" || $_GET['nazwa'] =="slusarz" || $_GET['nazwa'] =="kowal" && $_GET['umowa'] == "---" && $_GET['lokalizacja'] == "---")
  37. {
  38. try
  39. {
  40. $pdo = new PDO($pol, $user, $pass);
  41. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  42. if(isset($_GET['nazwa']))
  43. {
  44. $stmt = $pdo->query("SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o
  45. JOIN users u ON u.id_usera = o.id_usera
  46. JOIN branza b ON b.id_branzy = o.id_branzy
  47. JOIN umowa i ON i.id_umowy = o.id_umowy
  48. JOIN lokalizacja l ON l.id_lok = o.id_lok
  49. WHERE b.nazwa_branzy = '{$_GET['nazwa']}'");
  50. echo '<ul>';
  51. foreach($stmt as $row)
  52. {
  53. echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].'</li>';
  54. }
  55. $stmt->closeCursor();
  56. echo '</ul>';
  57. //print_r($_GET);
  58. }
  59. }
  60. catch(PDOException $e)
  61. {
  62. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  63. }
  64. }
  65. // SELECT nazwa, umowa - pokaż po nazwa && umowa
  66. else if(!empty($_GET['nazwa'] =="elektromechanik" || $_GET['nazwa'] =="murarz" || $_GET['nazwa'] =="slusarz" || $_GET['nazwa'] =="kowal" &&
  67. $_GET['umowa'] =="umowa o prace" || $_GET['umowa'] =="umowa zlecenie" || $_GET['umowa'] =="umowa o dzielo" || $_GET['umowa'] =="umowa na czas okreslony") && $_GET['lokalizacja'] == "---")
  68. {
  69. try
  70. {
  71. $pdo = new PDO($pol, $user, $pass);
  72. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  73. if(isset($_GET['nazwa']))
  74. {
  75. $stmt = $pdo->query("SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM branza AS b, ogloszenia AS o, users AS u, umowa AS i, lokalizacja AS l
  76. WHERE b.nazwa_branzy = '{$_GET['nazwa']}' AND i.rodzaj_umowy = '{$_GET['umowa']}'
  77. AND u.id_usera = o.id_usera AND b.id_branzy = o.id_branzy AND i.id_umowy = o.id_umowy AND l.id_lok = o.id_lok");
  78. echo '<ul>';
  79. foreach($stmt as $row)
  80. {
  81. echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].'</li>';
  82. }
  83. $stmt->closeCursor();
  84. echo '</ul>';
  85. //print_r($_GET);
  86. }
  87. }
  88. catch(PDOException $e)
  89. {
  90. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  91. }
  92. }
  93. // SELECT nazwa, umowa, lokalizacja - pokaż po nazwa && umowa && lokalizacja
  94. else if(!empty($_GET['nazwa'] =="elektromechanik" || $_GET['nazwa'] =="murarz" || $_GET['nazwa'] =="slusarz" || $_GET['nazwa'] =="kowal" &&
  95. $_GET['umowa'] =="umowa o prace" || $_GET['umowa'] =="umowa zlecenie" || $_GET['umowa'] =="umowa o dzielo" || $_GET['umowa'] =="umowa na czas okreslony") && $_GET['lokalizacja'] == "Opole" ||
  96. $_GET['lokalizacja'] == "Krapkowice" || $_GET['lokalizacja'] == "Nysa" || $_GET['lokalizacja'] == "Olesno")
  97. {
  98. try
  99. {
  100. $pdo = new PDO($pol, $user, $pass);
  101. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  102. if(isset($_GET['nazwa']))
  103. {
  104. $stmt = $pdo->query("SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM branza AS b, ogloszenia AS o, users AS u, umowa AS i, lokalizacja AS l
  105. WHERE b.nazwa_branzy = '{$_GET['nazwa']}' AND i.rodzaj_umowy = '{$_GET['umowa']}' AND l.lokalizacja = '{$_GET['lokalizacja']}'
  106. AND u.id_usera = o.id_usera AND b.id_branzy = o.id_branzy AND i.id_umowy = o.id_umowy AND l.id_lok = o.id_lok");
  107. echo '<ul>';
  108. foreach($stmt as $row)
  109. {
  110. echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].'</li>';
  111. }
  112. $stmt->closeCursor();
  113. echo '</ul>';
  114. //print_r($_GET);
  115. }
  116. }
  117. catch(PDOException $e)
  118. {
  119. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  120. }
  121. }
  122. //else {echo "SQL Injection Try Detected!!!";}
  123.  
  124. //else {echo "SQL Injection Try Detected!!!";}
  125. }
  126.  
  127. ?>


Formularz:
  1. <form action="index.php" method="get">
  2. <select name="nazwa" value="nazwa">
  3. <option><?php if(isset($_GET['nazwa'])) {echo ($_GET['nazwa']);} else {echo "---";} ?></option>
  4. <option>---</option>
  5. <option>elektromechanik</option>
  6. <option>murarz</option>
  7. <option>slusarz</option>
  8. <option>kowal</option>
  9. </select>
  10. <select name="umowa" value="umowa">
  11. <option><?php if(isset($_GET['umowa'])) {echo ($_GET['umowa']);} else {echo "---";} ?></option>
  12. <option>---</option>
  13. <option>umowa o prace</option>
  14. <option>umowa zlecenie</option>
  15. <option>umowa o dzielo</option>
  16. <option>umowa na czas okreslony</option>
  17. </select>
  18. <select name="lokalizacja" value="lokalizacja">
  19. <option><?php if(isset($_GET['lokalizacja'])) {echo ($_GET['lokalizacja']);} else {echo "---";} ?></option>
  20. <option>---</option>
  21. <option>Opole</option>
  22. <option>Krapkowice</option>
  23. <option>Nysa</option>
  24. <option>Olesno</option>
  25. </select>
  26. <input type="submit" name="submit" value="Zastosuj filtry">
  27. <a href="index.php">Odśwież</a>
  28. </form>
Go to the top of the page
+Quote Post

Posty w temacie


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: 1.01.2026 - 16:37