Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Problemy z wyszukiwarką
dark_root
post
Post #1





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


To jest część mojego kodu odpowiadająca za wydobywanie z bazy odpowiednich danych
Kod
$zapytanie = "SELECT * FROM dane WHERE imie LIKE '$a' && nazwisko LIKE '$b'";
$idzapytania = mysql_query($zapytanie);

Gdy zmienna a i b mają jakieś wartości to wszystko ładnie działa i wyskakują wszyscy z bazy o danym imieniu i nazwisku. Jednak gdy chce wydobyć z bazy wszystkie wpisy, gdzie imię wynosi Andrzej i pole nazwisko pozostawiam puste nic się nie pojawia, ponieważ w bazie nie ma nikogo spełniającego odpowiednie kryteria. Jak zrobić, że gdy jedno z pól jest puste to żeby nie brać go pod uwagę?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Sprawdzaj czy pola są wypełnione i dynamicznie buduj zapytanie. Chodzi mniej więcej o to:
1. Zapytanie początkowe to 'SELECT * FROM dane
2. Jeżeli wpisano imię to dopisz do zapytania warunek dla imienia.
3. Jeżeli wpisano nazwisko to dopisz do zapytania warunek dla nazwiska.
4. Wykonaj zapytanie.
Go to the top of the page
+Quote Post
piaseq
post
Post #3





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


Możesz sprawdzać w php czy zmienna $a i $b są ustawione i sklejać odpowiedni string z zapytaniem.
Go to the top of the page
+Quote Post
Spyder
post
Post #4





Grupa: Zarejestrowani
Postów: 269
Pomógł: 7
Dołączył: 12.10.2006
Skąd: Newcastle Upon Tyne

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


  1. <?php
  2. if ( $a != "" ) { $search = "LIKE '".$a."' "; }
  3. if ( $b != "" ) { $search = "LIKE '".$b."' "; }
  4. if ( $a != "" && $b != "" ) { $search = "LIKE '".$a."' && nazwisko LIKE '".$b."'"; }
  5.  
  6. $zapytanie = "SELECT * FROM dane WHERE imie $search";
  7. $idzapytania = mysql_query($zapytanie);
  8. ?>


Pisane z glowy, powinno dzialac ale sprawdz.


--------------------
Portfolio

Windows Vista Business SP1
DELL VOSTRO 200, Intel Core2 DUO E4600 2.4GHz, 3 GB RAM, ATI Radeon HD 2400 Pro, Screen DELL 22"

Pomogłem ci -> Kliknij "Pomógł" -> Dzięki
Go to the top of the page
+Quote Post
matixrr
post
Post #5





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 14.04.2007

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


Napisałem juzto raz ale usunąłem bo nie byłem pewien ale sprawdziłem i jednak to powinno działać:

  1. $zapytanie = "SELECT * FROM dane WHERE imie LIKE '$a' || nazwisko LIKE '$b'";


Wcześniej miałeś operator && co powodowało że musi byc podane i $a i $b a tak musi być tylko jedno z nich.


--------------------
Pomogłem? Zmotywuj mnie do dalszej pracy i kliknij magiczny przycisk:

Go to the top of the page
+Quote Post
dark_root
post
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 1
Dołączył: 19.11.2007

Ostrzeżenie: (10%)
X----


Dzięki Spyder, twój kod działa. Daje Ci "pomógł". Matixrr, twój kod nie odpowiada mi, gdyż dając zamiast and or wypisze mi z bazy np. wszystkich Andrzejów niezależnie od tego jakie nazwisko wpiszę.

Ten post edytował dark_root 3.02.2009, 18:44:00
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 Aktualny czas: 20.08.2025 - 14:18