Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] SELECT WHERE
Forum PHP.pl > Forum > Przedszkole
artekp999
Mam jeden drobny błąd z warunkiem WHERE. Napisałem wyszukiwarkę rekordów. Składa się ona z pół nazwa i miejscowość. Gdy uzupełnię tylko jedno pole to skrypt działa idealnie ale gdy uzupełnię dwa pola to skrypt wyświetla osobno rekordy. Używam tu warunku WHERE OR
Przykład
Osoba - Jan Kowalski
Miejscowość - Wadowice

Wyświetli mi Jana Kowalskiego i wszystkie osoby z Wadowic. Chce aby wyszukało mi Jana Kowalskiego z Wadowic.

Z kolei warunek WHERE AND działa tylko gdy uzupełnię prawidłowo dwa pola.

Szukam takiego rozwiązania aby działały razem powyższe przykłady czyli np.Uzupełnię tylko pole miejscowość Wadowice i wyszuka wszystkich z wadowic lub uzupełnię dwa pola i znajdzie Jana Kowalskiego z Wadowic.

Jak mam rozwiązać ten problem?questionmark.gif

Wyszukiwarka.php
  1. <?php
  2. $tytul = "Wyszukiwarka";
  3. include('glowne/gora.php');
  4. include("polacz.php");
  5. echo '<center>';
  6. echo "<form method=\"post\">
  7. Nazwa osoby lub zabytku<br>
  8. <input type=\"text\" name=\"nazwa\" style=\"width: 250px\"><br>
  9. Miejscowosc<br>
  10. <input type=\"text\" name=\"miejscowosc\" style=\"width: 250px\"><p>
  11. <input type=\"submit\" name=\"submit\" value=\"Wyślij\">
  12. <input type=\"reset\" value=\"Od nowa\"></form>
  13. ";
  14. {
  15. $nazwa = "$_POST[nazwa]";
  16. $miejscowosc = "$_POST[miejscowosc]";
  17. $query = mysql_query("select * from podstrony WHERE nazwa = '$nazwa' OR miejscowosc = '$miejscowosc'");
  18. while($rekord = mysql_fetch_array($query))
  19. {
  20. $tyt = $rekord[1];
  21. $link=str_replace(" ","_",$tyt);
  22. $naz .= '<a href="'.$rekord[0].','.$rekord[2].','.$link.'.html"><div id="TYTUL1">'.$rekord[1].'</div></a><div id="AUTOR1"> Miejscowość: <b>'.$rekord[2].'</b> - <b>'.$rekord[14].'</b> </div><div id="TRESC1">'.$rekord[7].'</div><br>';
  23. }
  24. echo "$naz";
  25. }
  26. echo '</center>';
  27. include('glowne/stopka.php'); ?>
  28.  
matino
  1. nazwa LIKE '%$nazwa%' AND miejscowosc LIKE '%$miejscowosc%'
sadistic_son
Rozne zapytania w zaleznosci od wypelnionych pol:
  1. if(!empty($_POST['nazwa']) && !isset($_POST['miejscowosc'])){
  2. $q="SELECT * FROM podstrony WHERE nazwa='$nazwa'";
  3. }
  4. if(!isset($_POST['nazwa']) && !empty($_POST['miejscowosc'])){
  5. $q="SELECT * FROM podstrony WHERE miejscowosc='$miejscowosc'";
  6. }
  7. if(!empty($_POST['nazwa']) && !empty($_POST['miejscowosc'])){
  8. $q="SELECT * FROM podstrony WHERE miejscowosc='$miejscowosc' AND nazwa='$nazwa'";
  9. }


@matino a czytałeś dokładnie to co kolega napisał? Może być albo jedno albo drugie albo oba wypełnione. Twoja podpowiedź nie rozwiązuje nic, bo to nic innego jak to co kolega już stworzył, oprócz tego, że wyszukanie miejscowości 'Anowo' zwróci także 'Maksymilianowo' itp.
artekp999
Dzięki sadistic_son twój sposób okazał się dobry lecz troszke musiałem go zmodyfikować aby działał poprawnie.

  1. if(!empty($_POST['nazwa'])){
  2. $q="SELECT * FROM podstrony WHERE nazwa='$nazwa'";
  3. }
  4. if(!empty($_POST['miejscowosc'])){
  5. $q="SELECT * FROM podstrony WHERE miejscowosc='$miejscowosc'";
  6. }
  7. if(!empty($_POST['nazwa']) && !empty($_POST['miejscowosc'])){
  8. $q="SELECT * FROM podstrony WHERE miejscowosc='$miejscowosc' AND nazwa='$nazwa'";
  9. }
sadistic_son
Też dobrze, tylko nie zmieniaj kolejności tych ifów bo nie będzie działać.
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.