![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 24.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie,
Przeczesałem wczoraj połowę internetu, ale problem nadal jest na podobnym poziomie na jakim był przed rozpoczęciem poszukiwań. Sprawa dotyczy się systemu dodawania newsów i słów kluczowych (tagów). Struktura bazy wyglądać będzie następująco(?): news: - id_news - tytul - tresc - data - autor - id_tags (?) tagi: - id_tags - tag tagi_news - id_tags (int?) - id_news Proszę o kompetentną osobę czy powyższa struktura jest prawidłowa czy może warto coś dodać/zmienić? Przykład wyświetlania artykułu (news): Tytuł: Nowy wpis Treść: Lorem ipsum... Data: Dzisiaj o 19:11 Autor: Admin Tagi: nowy wpis, lorem ipsum, lorem Jak widać w powyższym przykładzie chcę użyć 3+ słów kluczowych, niemniej jednak nie wiem jak się za to zabrać. Ad1. Przede wszystkim zależy mi na opinii czy struktura bazy danych jest odpowiednia? Ad2. Mając przypisane: id_tags = 1 tag = nowy wpis id_tags = 2 tag = lorem ipsum id_tags = 3 tag = lorem Jak wpisać wszystkie 3 do id_tags z tabeli news? Rozumiem, że relacja zachodząca pomiędzy tabelami to jeden do wielu, niemniej jednak nadal nie mam odpowiednich wskazówek do satysfakcjonującego mnie rozwiązania. Z góry dziękuję za pomoc, linki do artykułów, które będą mi w stanie pomóc oraz pozostałe cenne wskazówki. Arek |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 18 Dołączył: 15.04.2009 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
Ja bym zrobił to tak:
I np. jak masz trzy tagi w newsie to trzymasz ich id oddzielone przecinkami, a jak chcesz je wyciągnąć to coś w stylu:
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 262 Pomógł: 39 Dołączył: 12.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Orl korrect! Mam podobną sytuację z użytkownikami w Kohanie. Jest tabela user z danymi użytkowników (u Ciebie nowości), tabela z rolami tychże (odpowiednik Twoich tagów) oraz tabela z przypisaniami zwana role_user, czyli odpowiednik Twojego tagi_news.
Załóżmy, iż chcę wybrać id użytkownika, jego pierwsze imię, a także jego role w postaci id_roli:nazwa_roli;id_roli:nazwa_roli;... Co więcej, chcę aby ta lista była posortowana w/g nazwy roli, a całość wyników w/g imienia. Mogę to zrobić na przykład następującym zapytaniem:
Dla jasności dodałem wszędzie nazwę tabeli. --edit-- Dla ułatwienia wrzucam jeszcze strukturę:
--edit-- Jeszcze drobne uwagi kosmetyczne: Weź pod uwagę, że DISTINCT jest akurat w tym przypadku zbędny, bo wszystko ma klucze. Napisałem z rozpędu ![]() Ponadto, u Ciebie zapewne LEFT JOIN sprawdzi się bardziej niż NATURAL JOIN, który użyłem tutaj dla przejrzystości zapytania. Ten post edytował Bags_Bunny 17.04.2011, 16:49:31 -------------------- rm -rf /*
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 24.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki Panowie za pomoc! Rozwiązałem to nieco inaczej, ale te dwie riposty nakierowały mnie odpowiednio - jestem zadowolony z rezultatu. Ostatnie chyba pytanie mam - jaką funkcją w PHP dobiorę się do ostatniego wyniku pobranego z bazy danych za pośrednictwem pętli while? Wyrzucam moje tagi: 123, abc, zxc, cxz, itp.
I jak wiadomo wynik mój będzie wyglądał następująco: tag1, tag2, tag3, [przecinek na końcu], w jaki sposób mogę się go pozbyć? Dzięki Panowie za pomoc! Rozwiązałem to nieco inaczej, ale te dwie riposty nakierowały mnie odpowiednio - jestem zadowolony z rezultatu. Ostatnie chyba pytanie mam - jaką funkcją w PHP dobiorę się do ostatniego wyniku pobranego z bazy danych za pośrednictwem pętli while? Wyrzucam moje tagi: 123, abc, zxc, cxz, itp. I jak wiadomo wynik mój będzie wyglądał następująco: tag1, tag2, tag3, [przecinek na końcu], w jaki sposób mogę się go pozbyć? Gdyby kogoś to interesowało to rozwiązałem to w następujący sposób:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.05.2025 - 09:17 |