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%)
-----


Za pomocą skryptu:
  1. <form action="check.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.  
  11. <input type="submit" name="submit" value="Zastosuj filtry">
  12. <a href="index.php">Odśwież</a>
  13. </form>
  14.  
  15. <?php
  16.  
  17. require_once 'connect.php';
  18.  
  19. echo "SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o
  20. JOIN users u ON u.id_usera = o.id_usera
  21. JOIN branza b ON b.id_branzy = o.id_branzy
  22. JOIN umowa i ON i.id_umowy = o.id_umowy
  23. JOIN lokalizacja l ON l.id_lok = o.id_lok
  24. WHERE b.nazwa_branzy = '{$_GET['nazwa']}'";
  25.  
  26. ?>


otrzymałem:
  1. SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja FROM ogloszenia AS o JOIN users u ON u.id_usera = o.id_usera JOIN branza b ON b.id_branzy = o.id_branzy JOIN umowa i ON i.id_umowy = o.id_umowy JOIN lokalizacja l ON l.id_lok = o.id_lok WHERE b.nazwa_branzy = 'elektromechanik'


i po wklejeniu do PhpMyAdmin ruszyło:)
Tymczasem w skrypcie właściwym sprawa wygląda tak:
  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.  
  16. echo '<ul>';
  17. foreach($stmt as $row)
  18. {
  19. echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].'</li>';
  20. }
  21. $stmt->closeCursor();
  22. echo '</ul>';
  23.  
  24. //print_r($_GET);
  25. }
  26. }
  27. catch(PDOException $e)
  28. {
  29. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  30. }
  31. }


I nadal wyświetla wszystkie rekordy... Może w instrukcji warunkowej coś jest nie tak... Ale tak patrzę i raczej wszystko z nią ok.

Już mam. Pierwszego if zmieniłem z:

  1. if(empty($_GET['nazwa']) || $_GET['nazwa'] == "---" || $_GET['umowa'] == "---" || $_GET['lokalizacja'] == "---")


na:

  1. if(empty($_GET['nazwa']) || $_GET['nazwa'] == "---" && $_GET['umowa'] == "---" && $_GET['lokalizacja'] == "---")


I działa. Dzięki za czas i pomoc (IMG:style_emoticons/default/smile.gif)
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: 28.12.2025 - 04:57