Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mySQL] wyszukiwarka ignoruje jeden warunek
Forum PHP.pl > Forum > Bazy danych > MySQL
yarek12
Witam,
mam następujący problem, pobieram dane z tabeli poprzez pętle while z warunkiem 'WHERE users = 1', wszystko działa dobrze, jednak jak wyszukiwarka dokleja do zapytania warunki LIKE to wtedy już skrypt nie patrzy czy users = 1 czy 0.

Oto kod wyszukiwarki i cześć pętli while:

  1. if ($_POST['search']) {
  2. $tags = strip_tags(mysql_real_escape_string($_POST['tags']));
  3. if (!empty($tags)) {
  4. $searching = 'AND imie LIKE \'%'.$tags.'%\' OR login LIKE \'%'.$tags.'%\' OR nip LIKE \'%'.$tags.'%\' OR tel LIKE \'%'.$tags.'%\' OR firma LIKE \'%'.$tags.'%\' OR ulica LIKE \'%'.$tags.'%\' OR miasto LIKE \'%'.$tags.'%\' OR poczta LIKE \'%'.$tags.'%\'';
  5. }
  6. else {
  7. $searching = '';
  8. }
  9. }


  1. $query = mysql_query('SELECT * FROM users WHERE user = 1 '.$who.' '.$searching.' '.$go_sort.' LIMIT '.$page_no.','.$view_max.'');
  2. while($customer = mysql_fetch_array($query))
  3. {


Zapytanie rzeczywiście wygląda np tak:

  1. mysql_query('SELECT * FROM users WHERE user = 1 AND imie LIKE '%ik%' OR login LIKE '%ik%' OR nip LIKE '%ik%' OR tel LIKE '%ik%' OR firma LIKE '%ik%' OR ulica LIKE '%ik%' OR miasto LIKE '%ik%' OR poczta LIKE '%ik%' LIMIT ,');WHERE user = 1 AND imie LIKE '%ik%' OR login LIKE '%ik%' OR nip LIKE '%ik%' OR tel LIKE '%ik%' OR firma LIKE '%ik%' OR ulica LIKE '%ik%' OR miasto LIKE '%ik%' OR poczta LIKE '%ik%');


i tu pojawia się problem jak dochodzą warunki LIKE to już pobiera wyniki nie zależne od user = 1

mam nadzieję że dobrze wytłumaczyłem problem, z góry dziękuje za pomoc.
barcisz
  1. user = 1 AND imie LIKE '%ik%' OR login LIKE '%ik%'


Dla takiego kawałka warunek zostanie spełniony jeśli user = 1 i imie LIKE '%ik%' albo wystarczy, że login LIKE '%ik%'. Analogicznie dla całego zapytania. Kwestia kolejności działań logicznych.

Tak więc wszystko po AND musisz wstawić w nawiasy.
yarek12
Dzięki, działa pięknie, próbowałem już przedtem z nawiasami ale z czystej nie uwagi dałem przed AND a nie po.
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-2024 Invision Power Services, Inc.