Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tagi
Forum PHP.pl > Forum > Przedszkole
Lwik
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ć.
jaslanin
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
Lwik
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.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.