Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyszukiwarką PHP dla Tęgich Mózgów
Forum PHP.pl > Forum > PHP
Cenoniada
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. ?>
nospor
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?
Cenoniada
Czyli wszystko mam przerabiać na ten sposób?
nospor
co wszystko? Mieszales OR z AND. Jesli nie wiesz na jakiej zasadzie dziala OR i AND to sie dokształc 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
Cenoniada
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%')";


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

poraz kolejny proszę - uzywaj bbcode
Cenoniada
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 smile.gif i czekam na inne Tęgie Głowy, obiecuję wynagrodzić finansowo lub reklamowo.. 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. ?>
nospor
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
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.