![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Robię stronkę na której użytkownik może dodać sobie zdjęcia. Chciałbym aby mógł te zdjęcia opisać tagami (np. "drzewo", "dom", "jesień") i zastanawiam się jak to dobrze odzwierciedlić w bazie danych, aby móc później łatwo wyszukiwać zdjęcia wg. tagów.
Mój pomysł zakłada że każde zdjęcie ma 3 tagi (tak mi było łatwiej ![]() Zdjęcia *id_zdjecia nazwapliku id_tagu1 id_tagu2 id_tagu3 Tagi *id_tagu nazwa Mam tablicę Tagi gdzie każdy tag ma swoją nazwę i ID (bo wiele z nich będzie się powtarzać), a w tabeli zdjęcia zapisuję sobie same id. Zapytanie było by wtedy (pi razy drzwi): $tag = select id_tagu from tagi where nazwa like $nazwa select * from zdjecia where id_tagu1 = tag or id_tagu2 = tag or id_tagu3 = tag No i wszystko pięknie jak pierwsze wyszukanie zwróci tylko jeden wynik, bo jak więcej to troszke się to wszystko zawiłe robi. Ma ktoś pomysł jak to ładnie rozwiązać? Ten post edytował volvox 20.09.2010, 13:25:37 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Po prostu kontroluj, żeby nazwa tagu nie mogła się powtarzać (primary key) np.
Ja dodaję zdjęcie z tagiem drzewo, czyli zapis zdjęcia i nowy tag. Ty dodajesz inne zdjęcie z takim samym tagiem, to nie dodajesz kolejnego rekordu do tabeli tagi tylko pobierasz jego id (wiersza gdzie nazwa='drzewo'). -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale przy wyszukiwaniu ktoś może podać "dom" i wtedy będą pasować tagi "dom", "domator", "domownik" itp.
Chyba że wyszukiwanie wg. tagu zorganizować osobno i wymagać podania pełnej nazwy tagu czyli że "dom" wyszuka tylko "dom", ale zastanawiałem się czy ma ktoś inny ciekawy pomysł ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Możesz mieć listę tagów i podpiąć do tego autocomplete z jQuery, a pod spodem mieć normalną szukajkę po tagach, czyli wpisując szuka określonego tag'u lub takiego który zaczyna się od "dom" itp.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 02:37 |