Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql]Wyszukiwarka
Fixus
post 30.04.2007, 16:43:14
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


Witam

Potrzebuje napisać prostą wyszukiwarkę.
W tabeli 'content' mam pole 'slowa_kluczowe'

w 'slowa_kluczowe' wpisane jest: slowo1;slowo2;slowo3;

Teraz...użytkownik wpisuje sobie do wyszukiwarki np. 'slowo1' i chce znaleźć rekord który ma to w słowach kluczowych. Da radę to załatwić? Czy muszę się posłużyć gotową wyszukiwarką? Jeśli gotową to proszę o polecenie jakiejś naprawdę prostej bo nie tylko ja z niej będe miał ew. korzystać
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
franki01
post 30.04.2007, 17:05:07
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Moze latwiej by bylo zrobic slowa kluczowe wpisywane:

;slowo1;slowo2;slowo3; (na koncu i na poczatku zeby byl srednik)

i potem w zapytaniu przy WHERE uzywac LIKE '%;slowo kluczowe;%'

Ten post edytował franki01 30.04.2007, 17:05:35
Go to the top of the page
+Quote Post
Kowalikus
post 30.04.2007, 17:09:56
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 25
Dołączył: 23.07.2004

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


Jeśli mysql: Full Text search albo po prostu Limit

Inny sposób to modyfikacja struktury bazy danych

tabela z content:

id | content itd....

tabela z keyword:

id | keyword

tabela content_has_keyword

idContent | idKeyword

do tabeli keyword zapisujesz jedno sowo kluczowe z małej litery

do tabeli content_has_keyword wstawiasz rekordy np dla content.id = 5

5 | 6
5 | 8
5 | 9

wtedy wiersz z tabeli content i identyfikatorze id 5 zawiera trzy słowa kluczowe o identyfikatorach 6, 8, 9, których nazwy znajdują się w tabeli keyword.

Następnie w zapytaniu łączysz te 3 tabele i w klauzuli WHERE keyword.keyword = 'szukane słowo kluczowe':


--------------------
Go to the top of the page
+Quote Post
pbnan
post 30.04.2007, 17:38:00
Post #4





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 27.03.2007
Skąd: Osiek almost City ;-D

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


Ew. oprócz fulltext masz jeszcze REGEXP smile.gif
Kod
SELECT * FROM table WHERE column REGEXP 'slowo_kluczowe'

I żadnej osobnej tabeli nie trzeba robić smile.gif
//oczywiście to sposób dla tagów - 'tag1;wakacje;morze' etc. smile.gif

Ten post edytował pbnan 30.04.2007, 17:39:13


--------------------
"Hmmm, na wakacje trzeba będzie zacząć zarabiać, co nie? ;-] GTA IV się coraz bardziej zbliża... ;-]"
To się nazywa częsty update sygnaturki.
;-)
Go to the top of the page
+Quote Post
Fixus
post 30.04.2007, 17:49:57
Post #5





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


zrobiłem jak pbnan doradził
I jes PRAWIE ok. Otóż t wyglada tak:
Kod
$zapytanie = "SELECT * FROM content WHERE slowa_kluczowe REGEXP '$fraza'";
    
    $wynik = mysql_query($zapytanie);
    $ilosc = mysql_num_rows($wynik);
    echo $ilosc;
    $it = mysql_fetch_array($wynik);
    echo $it['con_id']."<br />";

Niestety nie zwraca żadnego wyniku ani błędu. Kiedy daje echo $zapytanie i wrzucam to co wywala przez przeglądarke do myadmin`a to działa idealnie. Czemu tu nie działa?
mysql_num_rows() zwraca 0 tak samo jak mysql_errno()
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 - 12:41