![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 22.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
witam mam jedną tabelke w mysqlu, która wygląda m.w tak:
ID | nr_wolumenu | autor | rok_wyd | tytul | keywordy | 12 | 121332123 | J.Kos| 2001 | Prawo karne |;prawo;karne;prawo karne; | w komórce "keywordy" trzymam keywordy (rozdzielone średnikami) opisujące wolumeny. Pole to nie ma ograniczenia, keywordów moze być wiele (ale nie raczej nie więcej niż 40-60) proste szukanie mam skonstruowane prosto query = "SELECT id, nr_wolumenu, tytul FROM tabela where keywordy like '%;$strsearch;%' limit $w, 20" gdzie zmienna $strsearch to wartość wpisana w formularzu do szukania. kolejną rzecza jaką chciałbym zrobić to wyszukiwanie zaawansowane, tak aby można było wpisać w formularzu np. coś takiego: "kryminał and paryż and morderstwo not kos" lub "(kryminał or sensacja) and morderstwo" czyli w sql: "select id,, from tabela where keywordy like '%;kryminał;&' and keywordy like '%;paryż;%' and keywordy like '%;morderstwo;%' and keywordy not like '%;kos;%' limit 0,20 order by ..." itd teraz tylko pytanie jak skonstruować funkcje w php, która będzie analizowała wartość $strsearch i w zależności od tych and or not odpowiednio konstruowała zapytanie SQL. Macie pomysł ? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 3 Dołączył: 21.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Miałem też podobny problem i zrobilem to tak
,konstruuje jeden string w zależności od istniejących wartosci a potem je łącze, uwazgledniam tylko fakt który jest pierwszy(istotne dla postawienia odpowiedni0o przecinków) i wykonuje insert ale można to przerobi na zapytanie w podobny sposób. Jak widzisz po prostu to łącze stringi w odpowiedni sposób, sorx za poobcinane wiersze ale kopiowalem to z putty Ten post edytował dr_bonzo 23.02.2006, 12:33:51 -------------------- "Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 22.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
dzięki, ale już poradziłem sobie z tym inaczej.
dzięki użyciu w sql match against in boolean mode zamiast like ..., wystarczy zamieć and na +, not na - i działa.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 16:00 |