Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Posortowanie newsów/wpisów w archiwum - optymalne rozwiązanie
Michael2318
post 20.12.2012, 17:25:24
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Tworzę takiego 'mini-CMSa' i chciałbym utworzyć sobie takie archiwum. Trzeba by tam wszystkie wpisy ułożyć w pewnej kolejności. Schemat mniej więcej taki:

▼ 2012 (LICZBA WPISÓW)
_▼Grudzień (LICZBA WPISÓW)
__ TITLE PIERWSZEGO NEWSA
__ TITLE DRUGIEGO NEWSA
__ TITLE TRZECIEGO NEWSA
_▼Listopad (LICZBA WPISÓW)
__ TITLE PIERWSZEGO NEWSA
__ TITLE DRUGIEGO NEWSA
__ TITLE TRZECIEGO NEWSA

Pytanie - jak to 'ugryźć', żeby to było najbardziej optymalnie, jak się tylko da, mając do dyspozycji tylko uniksową datę wszystkich wpisów/newsów/postów (jeden pies jak to nazwiemy) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
krowal
post 20.12.2012, 19:05:57
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Wg. mnie to zależy od tego ile tych wpisów masz. Jeśli jest ich 20,30,50 to możesz sobie wyciągnąć wszystkie rekordy [title, timestamp] i w PHP w pętli wpakować każdy wpis do tablicy grupując je miesiącami.
  1. foreach($wpisy as $w){
  2. $lista[date('Y-m', $w['timestamp'])][] = $w;
  3. }


Inaczej zrobiłbym gdy wpisów jest dużo więcej, np kilka tysięcy. Wtedy powinieneś zrobić zapytanie które ci policzy ilość wpisów każdego miesiąca za pomocą COUNT() i GROUP BY oraz funkcji date/time w mysql i pokazać same miesiące z ilością wpisów. Klikając w miesiące rozwijałaby się lista z tytułami z jakimś stronicowaniem itp.

Ten post edytował krowal 20.12.2012, 19:06:31


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
wujek2009
post 20.12.2012, 19:38:50
Post #3





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Optymalne rozwiązanie? Filtrowanie newsów według kategorii: 2012 -> Grudzień, Styczeń, Luty, itd, 2013 -> Grudzień, Styczeń, Luty, itd oparłbym na podstawie modułu kategorii, który i tak pewnie masz w systemie newsów. Tylko zmodyfikowałbym strukturę - dodałbym trzy nowe pola:
Kod
news_count typu smallint - powinno starczyć ewentualnie typu mediumint
is_special = typu enum (yes|no) bądź tinyint
parent_tree = typu varchar = drzewko w postaci "IP" - było na forum


news_count - wiadomo jak dodajesz nowego njusa dla tego kategorii to dodajesz +1, w przypadku usunięcia -1 - proste.
is_special - w przypadku kategorii typu 2012, styczeń, luty, itd -> zaznaczyłbym "yes" -a w przypadku innych "no" - dlaczego? Ponieważ jak nadasz komuś uprawnienia do pisania njusów to niech zaznacza/odznacza tej kategorii tylko niech to robi z automatu. Plus dodatkowo jak pod newsem będziesz wyświetlał spis kategorii to łatwo sobie ustawisz zapytanie, aby nie pobierało kategorii typu styczeń, grudzień, itd...
parent_tree - chodzi oto, aby móc tworzyć zagłębienia dla kategorii - tak jak to pokazałeś na pierwszym screenie (tj: 2013 -> Grudzień, 2013 -> Styczeń, itd)

Jeśli budowałbyś już taki kod to NIE WYŚWIETLAJ wszystkich newsów dla 12 miesięcy bo po co? proponuje żeby wyświetlało dopiero po kliknięciu w nazwę miesiąca - chyba, że ktoś nie zaznaczył nazwy to niech DOMYŚLNIE wczytuje pierwszy miesiąc.

Ten post edytował wujek2009 20.12.2012, 19:39:15
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: 14.08.2025 - 09:07