![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 20.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jestem początkujacy w PHP+MySQL (szczególnie w tym drugim), wiec prosze o wyrozumiałość.
Mam w MySQLu prosta tabele article, a w niej: title (text),text (text),tags (varchar[50]). Ze skryptem tworzącym "tag cloud" nie mialem wiekszych problemow, w necie jest mnostwo rozwiazan i mozna je latwo dostosowywac do swoich potrzeb. U mnie wyglada to tak:
Jednak problem zaczął się gdy chce wyciągnać z MySQLa i wyswietlic wszystkie (czy najlepiej 20 ostatnich) artykuly zawierające dany tag. Wogole nie wiem ja sie za to zabrac, ma ktos jakis pomysl? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Cytat w necie jest mnostwo rozwiazan i mozna je latwo dostosowywac do swoich potrzeb. Trafiłeś na najgorsze rozwiązanie z możliwych ![]() Rozbij to na 3 tabele: Kod articles +------------+-... | article_id | ... +------------+-... | 1 | ... | 2 | ... | 23 | ... Kod tags +--------+----------+ | tag_id | tag_name | +--------+----------+ | 1 | book | | 2 | comp | | 3 | trees | | 123 | two | Kod articles_tags +--------+------------+ | tag_id | article_id | +--------+------------+ | 1 | 1 | | 1 | 2 | | 1 | 13 | | 2 | 1 | | 2 | 13 | | 32 | 2 | | 32 | 111 | | 34 | 54 | Następnie poczytaj w manualu MySQL'a o łączeniu tabel w zapytaniach. Przykładowe zapytania: 1. Tagi danego artykułu
2. Artykuły w których występuje dany tag
3. 5 najpopularniejszych tagów
Pisane z palca, więc mogą być błędy. Ale ogólny zarys działania chyba przedstawiłem ;] -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 20.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hmm w sumie itak to mialem zmieniac w przyszlosci, bo jednym z zalozen serwisu jest to zeby kazdy user mogl tagowac kazdy artykul , a wyswietlane byly tagi najpopularniejsze dla danego artykulu.
Czy twoj sposob da sie zaadoptowac do tego ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 18.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
A jak w praktyce wyglądałoby dodawanie artykułów wraz z tagami? Bo nie bardzo umiem to sobie wyobrazić
![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 4 Dołączył: 28.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Trafiłeś na najgorsze rozwiązanie z możliwych ![]() Rozbij to na 3 tabele: Kod articles +------------+-... | article_id | ... +------------+-... | 1 | ... | 2 | ... | 23 | ... Kod tags +--------+----------+ | tag_id | tag_name | +--------+----------+ | 1 | book | | 2 | comp | | 3 | trees | | 123 | two | Kod articles_tags +--------+------------+ | tag_id | article_id | +--------+------------+ | 1 | 1 | | 1 | 2 | | 1 | 13 | | 2 | 1 | | 2 | 13 | | 32 | 2 | | 32 | 111 | | 34 | 54 | Następnie poczytaj w manualu MySQL'a o łączeniu tabel w zapytaniach. Przykładowe zapytania: 1. Tagi danego artykułu
2. Artykuły w których występuje dany tag
3. 5 najpopularniejszych tagów
Pisane z palca, więc mogą być błędy. Ale ogólny zarys działania chyba przedstawiłem ;] Tak koncepcja jest jak najbardziej poprawna. Sam taką stworzyłem do serwisu i sprawuje się jak najbardziej OK. Co do zapisu to najpierw rozbijasz ciąg np. "dupa tag2 jasia bla" funkcją explode, i sprawdzasz SELECTEM czy kolejne taki są w tabeli "tags" jeżeli nie to zapisujesz np,. tag "dupa" do tabeli "tags", natomiast jeżeli istnieje dany tag w bazie to wyciągasz jego ID. Jak masz ID tagu to zapisujesz go wraz z ID artykułu do tabeli "articles_tags". I tak zapisujesz każdy tag z osobna. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 18.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
no to nieźle kombinowania będzie.
1. - mam powtórzyć zapytanie dla każdego z tagów 1.a - pierw sprawdzam czy istnieje, jeśli tak to wyciągam id, 1.b - jeśli nie to dodaje i wyciągam id 2. - po zakończeniu wszystkich zapytań, mam spis id tagów i id artykułu 3. - dodaje id_tag & id_art tyle razy ile miałem tagów do tabeli arts_tags A jak mam wykonać punkt 1.b? Tj. jak od razu dostać ID właśnie dodanego rekordu? takie coś naskrobałem sobie:
w dobrym kierunku idę? ------------- EDIT: Na dziś:
Na razie tylko mi wypluwa. Może jutro dokończę. ----------------------------------- EDIT: No więc wersja finalna.
Jeżeli są jakieś błędy i coś można by wykonać inaczej/szybciej to czekam na wasze sugestie. Pozdrawiam Ten post edytował soon 5.03.2008, 20:55:58 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 11:44 |