Autor | Zpráva | ||
---|---|---|---|
mirio Profil |
#1 · Zasláno: 20. 9. 2011, 16:55:10
Ahoj,
na webu www.hctorpedohavirov.cz/ mám archiv článků. Teď je jich málo a toto vypisování mně nebolí, ale do budoucna bych archiv chtěl vypisovat přehledněji. Napadá mně výpis typu... Září 2011: článek 1 článek 2 Srpen 2011: článek 3 článek 4 atd. atd. atd. ..., ale moc nevím, jak na to. V databázi mám samozřejmě datum vytvoření (ve formátu UNIX Timestamp - což byla možná chyba?) a nejsem schopen přijít na to, jak vyhodnocovat a sloučit články za dané období (v mém případě měsíc a rok) a pak období vypsat, umístit pod něj články, vypsat další období, umístit články, atd. Pomůže někdo, prosím? Nebo vás napadá lepší způsob? Děkuju mockrát. P.S. Stránkování určitě nechci. |
||
Bertram Profil |
#2 · Zasláno: 20. 9. 2011, 20:37:24
Ahoj,
a přestavit tabulku k obrazu svému by byl problém? |
||
mirio Profil |
#3 · Zasláno: 20. 9. 2011, 20:56:09 · Upravil/a: mirio
To asi ne, ale já stejně nevím, jak bych to měl udělat, i kdyby tam bylo MySQL-ovské "DATE". :-)
|
||
Kcko Profil |
#4 · Zasláno: 20. 9. 2011, 21:00:48
SELECT... FROM... GROUP BY YEAR(datum_clanku), MONTH(datum_clanku) ORDER BY ... a vypis snad zvládneš ne? |
||
mirio Profil |
#5 · Zasláno: 20. 9. 2011, 21:04:45
Aha, takhle to myslíš, přidat 2 sloupce, to mně vůbec nenapadlo... :-)) Podívám se na to.
|
||
Kcko Profil |
#6 · Zasláno: 20. 9. 2011, 21:10:49
Nemusíš, samozřejmě je to vhodnejší už kvůli indexům, ale pokud tam nebudeš mít kvanta záznamů, tak není potřeba.
|
||
mirio Profil |
#7 · Zasláno: 20. 9. 2011, 21:26:20
A jak bys to řešil v případě, že bych nic nepřidával? Teda s požitím aktuálního stavu, tedy Timestampu?
|
||
Kcko Profil |
#8 · Zasláno: 20. 9. 2011, 21:27:41
mirio:
Timestamp nepoužívám (vždy Datetime nebo Date), aby se s tím dalo pracovat. Takže bych si napsal převodní skript z Timestampu na DateTime a hodnoty bych si převedl a bylo by. |
||
mirio Profil |
#9 · Zasláno: 20. 9. 2011, 21:35:41
Aha, takže bys prostě převedl UNIX na DATE (není problém) a potom seskupil pomocí GROUP BY. OK, dík moc za nasměrování, zkusím se na to podívat a pak sem dám nějaký závěr. Zatím moc děkuju.
|
||
Časová prodleva: 9 dní
|
|||
mirio Profil |
#10 · Zasláno: 29. 9. 2011, 11:34:36 · Upravil/a: mirio
Tal jsem se k tomu konečně dostal a hned jsem zase v koncích. :-) Když se snažím použít GROUP BY, vypíše mi to jen jeden řádek, což je blbě.
Dotaz jsem maximálně zjednodušil, abych našel problém a to takto... SELECT * FROM `clanky` WHERE aktivni=1 GROUP BY YEAR(vytvoreno_date) Snažil jsem se hledat na http://dev.mysql.com/, ale nenašel jsem nikde, proč mi to pořád vyhazjue jen jeden výsledek. Nevím, kde je problém... |
||
Tori Profil |
#11 · Zasláno: 29. 9. 2011, 11:37:47
mirio:
Spíš ORDER BY, než seskupování (podle toho, co píšete v #1). |
||
okolojdouci Profil * |
#12 · Zasláno: 29. 9. 2011, 12:24:46
Tori:
„Spíš ORDER BY, než seskupování (podle toho, co píšete v #1).“ .. a to rozdělení do skupin realizovat v php pomocí date() |
||
mirio Profil |
#13 · Zasláno: 29. 9. 2011, 13:58:27
A můžu se zeptat jak?
|
||
okolojdouci Profil * |
#14 · Zasláno: 29. 9. 2011, 14:20:49
V rámci cyklu, kterým vypisuješ jednotlivé položky, porovnávej měsíc aktuální a minulé položky. Když se liší, ten nový vypiš.
$minuly = 0; .. while { .. $mesic = date("n", $zaznam["datum"]); if ($mesic != $minuly) { echo "nový měsíc: ".$mesic }; .. $minuly = $mesic; } |
||
mirio Profil |
#15 · Zasláno: 29. 9. 2011, 15:14:44 · Upravil/a: mirio
Jo, už mně to došlo, já nechápal to použití date(), protože jsem blbej. :-)
Udělal jsem to takto... $minuly_mesic = 0; ... while { ... $mesic = substr($archiv["vytvoreno"],3,2); if ($mesic != $minuly_mesic) { echo ("<h3 class=\"darkRed\">".$archiv["mesic"]." ".$archiv["rok"]."</h3>"); } $minuly_mesic = $mesic; ... } |
||
mirio Profil |
#16 · Zasláno: 29. 9. 2011, 15:24:31
Pro úplnost, použito zde: http://www.hctorpedohavirov.cz/archiv.php
|
||
Časová prodleva: 13 let
|
0