Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]Wyszukiwarka
Forum PHP.pl > Forum > PHP
Fixus
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ć
franki01
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;%'
Kowalikus
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':
pbnan
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
Fixus
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()
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.