Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z wyszukiwarką PHP dla Tęgich Mózgów, Niepoprawne wyszukiwanie, błąd kodu ??
Cenoniada
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

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


Witam serdecznie,

Mam problem-ik z działniem a raczej poprawnym funkcionowaniem wyszukiwarki www.Cenoniada.pl

Wszysko jest ok gdy wyszukujemy jednej frazy np. Monitor

http://www.cenoniada.pl/?p=Monitor&type=all

ale gdy juz szukamy konkretnego modelu to mamy małe zamieszanie np Monitor T220

http://www.cenoniada.pl/?p=Monitor+T220&type=all

I tutaj jak widać baza daje wyniki w cały Świat a powinien najpierw podawać wyniki jako wyszukane całe frazy "Monitor T220" wsród tytułów potem wsród opisów a potem pojedyńcze słowa wszyukane wsórd tytułów i opisów, a przy tym nie powtarzając wyników i nie szukajac juz w wyrzuconych z bazy wynikach...

W obecnej fazie szukania gdy wpiszemy np "a" to dostajemy produkty według ich kolejności dodania. A powinno być że im więcej a jest w wynikach to powinny być typowane jaki pierwsze..

Kolejny problem to "polskie znaki" a raczej ich zwrot z bazy danych do pola wyszukiwarki. Wygląda to strasznie baza danych zwraca znaki w utf-ie np. wpisując fraze szukania z Furetał

http://www.cenoniada.pl/?p=futera%C5%82&type=all


Czy da się coś zaradzić? Czy jest to tylko mały problem czy trzeba modyfikować kod wyszukiwawczy? Czy takie wymaganie szukania nie będzie trwało zbyt długo? Wklejam część kodu odpowiedzialny za szukanie..

  1. <?php
  2. $q = "SELECT * FROM {item} WHERE ($where_type) AND (((`title` = '$getdb') OR `title` LIKE '$getdb%' OR `title` LIKE '%$getdb%') OR (`description` = '$getdb' OR `description` LIKE '$getdb%' OR `description` LIKE '%$getdb%')";
  3. ?>


Ten post edytował Cenoniada 24.10.2008, 14:56:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) UZYWAJ bbcode
2) nie:
  1. <?php
  2. $where_type = "`type` = 'usluga' OR `type` = 'produkt'";
  3. ?>

a:
  1. <?php
  2. $where_type = "(`type` = 'usluga' OR `type` = 'produkt')";
  3. ?>

3) skoro ma wyszukiwac po wszystkich typach to na grzyba wogole je do warunku dajesz?
Go to the top of the page
+Quote Post
Cenoniada
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

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


Czyli wszystko mam przerabiać na ten sposób?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




co wszystko? Mieszales OR z AND. Jesli nie wiesz na jakiej zasadzie dziala OR i AND to sie dokształc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Jesli chcesz by OR byl laczony ze sobą a nie z andem to musisz OR wziasc w nawias. To tak samo jak z dodawaniem

3* 2+ 4 * 5 da ci inny wynik niz 3* (2+ 4) * 5
Go to the top of the page
+Quote Post
Cenoniada
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

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


Czyli Kubusiu powinno być :

Nie
$q = "SELECT * FROM {item} WHERE ($where_type) AND (((`title` = '$getdb') OR `title` LIKE '$getdb%' OR `title` LIKE '%$getdb%') OR (`description` = '$getdb' OR `description` LIKE '$getdb%' OR `description` LIKE '%$getdb%')";

tylko

$q = "SELECT * FROM {item} WHERE ($where_type) AND (((`title` = '$getdb') OR (`title` LIKE '$getdb%') OR `title` LIKE '%$getdb%') OR ((`description` = '$getdb') OR (`description` LIKE '$getdb%') OR `description` LIKE '%$getdb%')";


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zasade ci wyjasnilem. teraz ją zastosuj. Nie chce mi sie przebijac przez te Twoją sieczke.

poraz kolejny proszę - uzywaj bbcode
Go to the top of the page
+Quote Post
Cenoniada
post
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 23.10.2008

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


No niestety, przerobiłem według tych wskazówek i nic, tak dalej jak było ta jest...

A wyszukiwanie według ilości trafień fraz od najwięcej do najmniej to całkowicie cos innego.. A efekt polskich liter..

Nic, Nic, Nic...


Pozdrawiam KUBUSIA (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i czekam na inne Tęgie Głowy, obiecuję wynagrodzić finansowo lub reklamowo.. (IMG:http://forum.php.pl/style_emoticons/default/czarodziej.gif)


Wersja aktualna działa tak samo a wyglada :

  1. <?php
  2. $q = "SELECT * FROM {item} WHERE ($where_type) AND ((`title` = '$getdb' OR (`title` LIKE '$getdb%')) OR ((`title` LIKE '%$getdb%') OR (`description` = '$getdb')) OR ((`description` LIKE '$getdb%') OR (`description` LIKE '%$getdb%'))";
  3. ?>


Ten post edytował Cenoniada 24.10.2008, 14:57:29
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
UZYWAJ bbcode

Cytat
poraz kolejny proszę - uzywaj bbcode


dobra, 3 razy prosic nie bede. zamykam
zazalenia przyjmuje jak zwykle na PW

edit: temat otwieram. autor tematu ma poprawic wszystkie kody o bbcode
Go to the top of the page
+Quote Post

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: 22.08.2025 - 21:56