Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Niepoprawne wyniki wyszukiwania, Problem z wyszukiwarką firm według województw itp.
Kamil Rybczyński
post 8.08.2008, 16:32:25
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 1
Dołączył: 21.11.2006
Skąd: Ozorków

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


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ę.


--------------------
Wykonujemy strony www, wśród naszych produktów są także system rezerwacji online oraz system monitorowania pozycji w wyszukiwarkach
Go to the top of the page
+Quote Post
Kicok
post 8.08.2008, 17:12:30
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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ł.

Ten post edytował Kicok 8.08.2008, 17:12:58


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
SirZooro
post 8.08.2008, 17:15:20
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

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


Nawiasy masz poza stringami smile.gif


--------------------
Go to the top of the page
+Quote Post
Kamil Rybczyński
post 9.08.2008, 08:54:26
Post #4





Grupa: Zarejestrowani
Postów: 38
Pomógł: 1
Dołączył: 21.11.2006
Skąd: Ozorków

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


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?


--------------------
Wykonujemy strony www, wśród naszych produktów są także system rezerwacji online oraz system monitorowania pozycji w wyszukiwarkach
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: 14.08.2025 - 08:23