Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] SELECT WHERE
artekp999
post 24.04.2011, 15:45:43
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 2
Dołączył: 25.02.2011

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


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.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
matino
post 24.04.2011, 16:06:56
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 30
Dołączył: 9.08.2007

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


  1. nazwa LIKE '%$nazwa%' AND miejscowosc LIKE '%$miejscowosc%'
Go to the top of the page
+Quote Post
sadistic_son
post 24.04.2011, 16:08:01
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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.

Ten post edytował sadistic_son 24.04.2011, 16:12:09


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
artekp999
post 24.04.2011, 16:23:16
Post #4





Grupa: Zarejestrowani
Postów: 118
Pomógł: 2
Dołączył: 25.02.2011

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


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. }
Go to the top of the page
+Quote Post
sadistic_son
post 24.04.2011, 16:25:58
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Też dobrze, tylko nie zmieniaj kolejności tych ifów bo nie będzie działać.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
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: 19.07.2025 - 10:06