Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Tagi
Lwik
post 19.10.2012, 17:07:52
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Witam,
eksperymentuje ostatnio z wyrażeniami regularnymi postanowiłem zrobić więc wyświetlanie tagow użytych w postach. Równie dobrze mógłbym przelecieć like po postach - ale nie o to chodzi.
Do danego posta może być przyporządkowana dowolna liczba tagów, więc zapisuje to w formie NUMERTAGU:NUMERTAGU:NUMERTAGU
  1. TABLE posts
  2. id mediumint
  3. user_id mediumint
  4. text text
  5. date mediumint
  6. tag varchar

Przykładowy zwrot:
  1. id -> 1
  2. user_id -> 2
  3. text -> 'test'
  4. date -> time()
  5. tag -> '1:3:2'

Do szukajki pobieram ID tagu z tabeli 'tagi'
  1. id mediumint
  2. tag varchar

więc powinno wyglądać to mniej więcej tag:
  1. 1. SELECT id from tagi where tag = 'tag'
  2. 2. SELECT * from posts where tag = 'tag->id'
  3. while()

Macie jakieś pomysły na rozwiązanie tego? Przeszukałem sporą część google na rozwiązanie podobnego problemu, jednak zero satysfakcjonujących rezultatów.
//
Zdecydowałem utworzyć się kolejną tabelę "tagi_aktywne" insertując tam konkretne tagi z id_postów. Jeżeli ktos ma lepsze pomysły, proszę pisać.

Ten post edytował Lwik 19.10.2012, 21:50:10
Go to the top of the page
+Quote Post
jaslanin
post 20.10.2012, 07:08:42
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


Cytat
Zdecydowałem utworzyć się kolejną tabelę "tagi_aktywne" insertując tam konkretne tagi z id_postów. Jeżeli ktos ma lepsze pomysły, proszę pisać.


i tak się powinno robić, inaczej tabela nie jest znormalizowana. W wcześniejszym przykładzie kolumna tag nie spełniała http://pl.wikipedia.org/wiki/Normalizacja_bazy_danych#1NF

Ten post edytował jaslanin 20.10.2012, 07:10:38


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
Lwik
post 20.10.2012, 14:06:39
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Poszedlem więc w tamtym kierunku. Tylko teraz mam jeden problem, mianowicie, chcę utworzyć ranking najpopularniejszych tagów odświezany co powiedzmy 30 min.
Czy jest jakieś optymalniejsze rozwiązanie od pobrania wszystkich tagów i przypisania im odpowiednich count() z tagi_aktywne?
  1. select id, name from tagi
  2. while()
  3. {
  4. select count(id) from tagi_aktywne where tag_id = id
  5. }
  6.  
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 17:33