Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Wyszukiwarka z Bazy Danych, Jak to zrobić chodzi o Teorie
Poker
post
Post #1





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

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


Witam serdecznie...

Muszę zrobić wyszukiwarkę na stronę, która odpowiednio wyszukiwałaby i wyświetlała elementy w z bazy danych.


Otóż działanie jest takie wpisuję w szukajce słowo "zielony" i chciałbym aby znalazło mi te ID z bazy w których występuje dane słowo.


Lecz problem polega na tym że każdy REKORD ma pole KEYWORDS w którym słowa kluczowe wpisywane są w taki sposób :

1.- niebieski, ciemny, bielizna, kobieta, sklep, zakupy, darmowy szablon, allegro szablony
2.- zielony, kobieta, plaża, słońce, wakacje, kwiatki, darmowy, allegro
3.- niebieski, zakupy, odzież, granatowy, sklep, sprzedaż, porady allegro
4.- zakupy online, zakupy, fioletowy, ciuchy, ubrania, ubranka, sprzedawca, różowy, pink, kwiatki
5.- prezent, prezenty, niebieski, ciuchy, odzież, sklep, odzieżowy, zakupy

I powinno dać mi rekord o ID 2 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) lecz nie wiem kompletnie jak się do tego zabrać nigdy czegoś takiego nie robiłem i za bardzo nie wiem, czytałem w google i nic nie wyczytałem konkretnego...

Moje rozumowanie jest takie :
1. pobrać wszystkie keyworods z bazy
2. wyexplodować przecinki tak aby otrzymać pojedyncze słowa
3. sprawdzić do którego z eksplodowanych keywordsów pasuje słowo z szukajki
4. odebrać ID elementu w którym znajduje się dany keyword


Problem mam taki że nie wiem JAK zdobyć to ID?

Może ktoś ma inny pomysł łatwiejszy;> Nie chcę tutaj gotowych kodów tylko teorię, resztą zajmę się sam i przy okazji się czegoś nauczę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Z góry bardzo dziękuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marian2299
post
Post #2





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


Select `id` po prostu, tak mi się wydaje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
Poker
post
Post #3





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

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


no to by było proste:D tylko pobieram wszystkie słowa kluczowe:D z nich wyszukuje słowa które odpowiadają tym z szukajki i problem taki że id wyciągnąć się nie da:D bo ja robię coś źle.


Moje działanie jest dokładnie takie :

1. $hopsa=mysql_query("SELECT * FROM xxx");
2. WHILE($rekord=mysql_fetch_array($hopsa)) {
3. tutaj eksploduje sobie keywordsy i dopasowywuje do słów z szukajki:D
4. i zostają mi te słowa które pasują ale nie ma jak wyciągnąć ID;>

Nie wiem czy w ogóle w jasny sposób opisuje swój problem, nie mam zdolności humanistycznych.


Mógłbym zrobić coś na zasadzie nowej tabeli w bazie i tam

ID_PLIKU
KEYWORD


ale jeśli mam 300 plików i do każdego ~15 słów kluczowych to chyba nie ma sensu ?

Ten post edytował Poker 6.08.2009, 01:13:51
Go to the top of the page
+Quote Post
ayeo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

Oczywiście, że ma sens i jest to jedyne dobre wyjście. Jeśli chcesz trzymać te słowa kluczowe po przecinku jako TEXT i potem szukać REGEP'em to na bank nie oszczędzisz. Nie mówiąc już o rozszerzalności takiego rozwiązania. Dla bazy 10k rekordów to krótki kaszel, dobry indeks i nawet tego nie poczuje.

Pozdrawiam!
Go to the top of the page
+Quote Post
Poker
post
Post #5





Grupa: Zarejestrowani
Postów: 205
Pomógł: 3
Dołączył: 20.04.2009
Skąd: Jaworzno

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


w takim razie to ogromne ułatwienie dla mnie, i zrobię to takim sposobem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dziękuje za odpowiedź (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A nie prościej zrobić osobną tabelę z tagami?

id, tag, topic_id

Zawsze to łatwiej i mniejsze obciążenie.
Go to the top of the page
+Quote Post
ayeo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


No tak to przecież ma działać. Kwestia tylko czy trzymamy keywordsy w osobnej tabeli i robimy referencję wielu do wielu czy przypisujemy słowo do elementu bezpośrednio (id_elementu, word).
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. SELECT * FROM `tabela` WHERE `keywords` LIKE "%zielony%";
Go to the top of the page
+Quote Post
ayeo
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

Faktycznie, trudno odmówić Ci racji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Twoje rozwiązanie jest jak najbardziej w porządku. Pomijając oczywiście ewentualną rozbudowę, zarządzanie tagami itd (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Pozdrawiam!
Go to the top of the page
+Quote Post
phpion
post
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam!

Faktycznie, trudno odmówić Ci racji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nie sądzę aby kolega chciał przebudowywać strukturę bazy danych, raczej chciałby osiągnąć zamierzony efekt jak najmniejszym nakładem pracy stąd moja sugestia z wykorzystaniem LIKE. Nie zmienia to faktu, że poprawne rozwiązanie tego problemu (normalizacja) byłoby najlepszym rozwiązaniem.

Pozdrawiam!

hehe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 25.12.2025 - 00:07