Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z selectem
di@blo
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 9.03.2005

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


mam takie zapytanie

  1. $wykonaj = mysql_query("SELECT * FROM sprzet WHERE (nazwa LIKE '%$nazwa%') AND (opis LIKE '%$opis%') AND (firma LIKE '%$firma%') AND (kolor='$kolor') ");


gdy sie poda w formularzu wszystko tj nazwa, opis, firma, kolor to wszystko dziala ok ale jesli ktores z pol zostaje niewypelnione (a użytkownik musi miec taka mozliwosc) to mimo ze pozostale wartosci znajduja sie w bazie nie zwraca nic Jesli ktos wie jak to rozwiazac to bylbym wdzieczny Interesuja mnie rozwiazana w samym zapytaniu mysql oraz przez php

Ten post edytował batman 2.09.2008, 18:12:04
Powód edycji: nobody expects spanish inquisition
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fixus
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


problem zapewne wynika z tego, że kiedy UŻYTKOWNIK (pisownia polska nie jest taka trudna;P ) nie poda jakiejś wartości to zapytanie wyszukuje pól z pustymi ciągami znaków...przez to, że masz wszędzie AND to wygląda na tej zasadzie, że szuka pól gdzie opis czy tam firma jest pustym ciągiem znaków, a takowych nie znajduje bo jak sam napisałeś pozostałe wartości są w tabeli. Dlatego moja rada:
1. albo zamiast AND daj OR wtedy powinno działać
2. albo zrób sprawdzanie tego co jest zaznaczone i konstruuj w locie zapytanie
np:
Kod
$sql = "SELECT * FROM sprzet WHERE ";
if($_POST['nazwa'] != '') {
  $sql .= "nazwa LIKE '%nazwa%' AND";
}
if($_POST['opis'] != '') {
  $sql .= "opis LIKE '%opis%'";
.... // i tak dalej
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: 12.10.2025 - 12:29