Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Niepoprawne wyniki wyszukiwania
Forum PHP.pl > Forum > Przedszkole
Kamil Rybczyński
Witam, stworzyłem wyszukiwarkę do serwisu, której zadaniem jest pokazać firmy z pól wybranych z POSTa.

Argumenty to: województwo, kategoria oraz słowo szukane.

Każda firma może należeć do 5 kategorii.
Poniżej kod:

  1. <?php
  2. $a_elem= array();
  3.  
  4.  
  5. if(is_numeric($category) && $category!=0){
  6. $a_elem[] = ('category1='.$category.' OR category2='.$category.' OR category3='.$category.' OR category4='.$category.' OR category5='.$category);
  7. }
  8.  
  9. if(is_numeric($province) && $province!=0){
  10. $a_elem[] = ('province='.$province);
  11. }
  12.  
  13. if(!empty($question)){
  14. $a_elem[] = ('description LIKE %'.$question.'% OR title LIKE %'.$question.'%');
  15. }
  16.  
  17. $count_elem=count($a_elem);
  18.  
  19. $logic='id > 0';
  20.  
  21. if($count_elem>0){
  22.  
  23. for($z=0;$z<$count_elem;$z++){
  24. $logic .= ' AND '.$a_elem[$z];
  25. }
  26.  
  27. }
  28. ?>


Problem jest w tym, że wyświetlają się nie te wyniki, które powinny.

Tak jakby nie było tych nawiasów pomiędzy róznymi zapytaniami where.

Np. jesli wybiorę kategorię firm, która w przypadku kilku firm jest w tabeli w polu category1, category2, category3 lub category4 to wyświetlają się wszystkie firmy z tą kategorią, nawet jeśli województwo również określę, wyświetlają się wszystkie wyniki dla danej kategorii.

Natomiast jeśli wybiorę kategorię, która występuje w którejś firmie w polu category5 to sprawdza również województwo.
To tak jakby zupełnie zapytanie nie brało pod uwagę nawiasów oddzielających podzapytania.

I ponad to, nie wyszukiwuje słów kluczowych, zawsze pokazuje pustą listę firm, nawet jeśli wpiszę słowo kluczowe występujące w opisie firmy.


Proszę o pomoc i z góry dziękuję.
Kicok
Cytat
Problem jest w tym, że wyświetlają się nie te wyniki, które powinny.

Tak jakby nie było tych nawiasów pomiędzy róznymi zapytaniami where.


Bo tam nie ma żadnych nawiasów.
Jeśli mi nie wierzysz, to zrób sobie:
  1. <?php
  2.  
  3. // twój kod składający zapytanie SQL do kupy ...
  4.  
  5. die( $query );
  6.  
  7. ?>

W sekcji WHERE nie będzie ani jednego nawiasu.
A jako że AND ma wyższy priorytet niż OR ( większą siłę przyciągania sąsiednich elementów ), to zapytanie nie działa tak, jakbyś sobie tego życzył.
SirZooro
Nawiasy masz poza stringami smile.gif
Kamil Rybczyński
Kiedy wrzucam nawiasy w ramy stringów, to pokazuje mi się biała strona. Zapewne w złych miejscach umieszczam nawiasy.

Jak według was powinno wyglądać to zapytanie?
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.