Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Řazení posledních 10 příspěvků ve fóru

Zdravím,

naprogramoval (=splácal) jsem si fórum v php a mysql. Funguje skvěle, jen teď řeším, jak vypsat posledních x (třeba 10) aktivních témat na indexu. Tak bych se chtěl zeptat a poprosit jestli mi taj s tím někdo pomůže :-D

Tabulka je tady: 17.png
vyznam z te tabule pro reseni tohoto problemu ma:
idkomentare - jedinečné číslo příspěvku
koren - kdyz koren == 0, tak přispěvek zakládá nový thread, pokud != 0, tak reaguje na příspěvek s id = koren
datum - podle toho to chci radit, vysvetlim nize

jeste dodam, ze se nejedna o stromovou strukturu, je to jako stary forum na zive (stromovou strukturu si nekdy casem spatlam, slouzit k tomu bude ta reakcena). no a na zive taky driv na predni strane zobrazovali asi 10 poslednich vlaken z fora. presne tak to potrebuji ja.

Čili z té tabule vypsat (třeba) deset řádek, které budou seřazeny podle datumu posledniho prispevku v threadu, ale budou mít nadpis ze zakládajícího příspěvku (s kořenem 0). A taky bych rád počet příspěvků v tom threadu.

Osobně mi php moc nejde, teď jsem se zasekl na tom řazení podle posledního příspěvku, musel bych to udělat nějak prasecky, třeba založit novou tabuli, do ní to seřadit a pak vypsat 10 posledních, ale to by mi přestalo fungovat jakmile by bylo deset posledních příspěvků v méně než deseti vláknech :-[

Díky :-*

Předmět Autor Datum
SELECT .... FROM .... WHERE koren=0 ORDER BY datum ASC/DESC LIMIT 0,10
host 12.07.2006 20:19
host
nojo, jenze to mi seradi jen ty korenovy prispevky podle jejich datumu, ja potrebuju seradit korenov…
koffr 12.07.2006 20:28
koffr
Omlouvám se, špatně jsem si přečetl zadání... A než jsem stačil vymyslet to správné řešení, už ho se…
host 12.07.2006 20:38
host
on je v php/sql docela dobrej, tak mu věř... Pravda, už to umí skoro jako druhej los. Otázka je, kt…
anarchist 13.07.2006 11:29
anarchist
Ten select by mohol vyzerať nejako takto: select t.*, count(t2.idkomentare) as pocet, max(t2.datum)…
los 12.07.2006 20:36
los
ahoj, ke kazdymu korenovymu prispevku lepim cas posledni reakce, podle ktereho se to radi. ale mam j…
koffr 18.09.2006 13:02
koffr
Je to tým, že vytvoríš poslrce ako reťazec a potom sa to podľa toho reťazca radí. Daj tam "order by…
los 18.09.2006 13:07
los
hm, funguje to :-D diky jestli se nekdy potkame, mas u me :beer: poslední
koffr 18.09.2006 13:14
koffr

nojo, jenze to mi seradi jen ty korenovy prispevky podle jejich datumu, ja potrebuju seradit korenovy prispevky podle posledniho datumu prispevku s koren= id korenoveho prispevku

př. mam tři prispevky
A;koren=0;id=1;datuma
B;koren=1;id=2;dat umb
C;koren=1;id=3;datumc

prispevky B+C odpovidaji na prispevek A (maji koren1)
no a tehle prispevku mam kupu a potrebuju k tomu prispevku A priradit datum prispevku C (to je posledni co odpovidal na A) a pak vypsat deset prispevku s tim nejnovejsim prirazenym datumem.

Ten select by mohol vyzerať nejako takto:

select t.*, count(t2.idkomentare) as pocet, max(t2.datum) as poslednydatum
from tabulka as t
left outer join tabulka as t2 on t2.koren=t.idkomentare
where t.koren=0
group by t.idkomentare
order by poslednydatum desc
limit 10

Ak tam bude veľa príspevkov, tak by bolo efektívnejšie pamätať si ku každej otázke informácie o poslednom príspevku a aktualizovať ich pri vkladaní (a mazaní) ďalších príspevkov.

ahoj, ke kazdymu korenovymu prispevku lepim cas posledni reakce, podle ktereho se to radi. ale mam jeden problem, ktery by prosim prosim potreboval vyresit. mam tedy tento kod:

SELECT idkomentare, typprispevku, koren, nadpis, Date_Format( poslrce, '%d.%m %H:%i' ) AS poslrce FROM forum WHERE typprispevku =0 AND koren =0 ORDER BY `poslrce` ASC 

a to razeni funguje divne. radi to prispevky napriklad takto:

07.09 12:45
13.07 23:03
13.07 23:04
19.09 13:42

a ja samozrejme potrebuji toto:

19.09 13:42
07.09 12:45
13.07 23:04
13.07 23:03

bude to nejaka prkotina, ale nemuzu na ni prijit. D Í K Y :beer:

Zpět do poradny Odpovědět na původní otázku Nahoru