Komentáře a odpovědi na ně
- Ecrazit
- Člen | 16
Ahoj,
programuju si komponentu pro vkládání komentářů. Má se jednat o klasické, pod sebou vypsané komentáře, totožné jako například na https://phpfashion.com/
Komentáře jsou tedy očíslované a já se rozhodnu že odpovím například na komentář č. 5 (uvedu [5] před titulkem komentáře), tento komentář má v databázi id 108 a já tedy potřebuju, aby se 108 zapsalo jako parent_id u dalšího komentáře do db. Jak mám docílit toho, aby script zjistil, že právě onen komentář č. 5 je v db uložený pod id 108?
- duke
- Člen | 650
Pokud se toto pořadí může průběžně měnit (např. když moderátor
smaže nějaký komentář zatímco čteme), bude nejspíš nutné přidat do
formuláře informaci o mapování pořadí na konkrétní komentáře (např.
do hidden inputu). V daném případě by tedy část hodnoty tohoto inputu
mohla vypadat takto:
…4:107,5:108,6:125
…
Taktéž odkazovaný příklad (phpfashion) obsahuje hidden input ‚comment_rel‘, kterýžto bude nejspíš obsahovat nějakým způsobem zakódované toto mapování (ale to opravdu jen hádám).
- MartinitCZ
- Člen | 580
Když prozkoumáš zdrojové kody Nucleus CMS/BlogCMS (CMS phpfashion), tak bys mohl dostat odpověd. ;)
- Ecrazit
- Člen | 16
No vlastně se mi to chvíli po odeslání dotazu podařilo určitým způsobem vyřešit, ale nevím jak moc správné řešení to je.
V podstatě si v poli udržuju vazby mezi ID každého komentáře na stránce se skutečným ID v databázi.
$this->comments = $this->model->getComments($this->id, $this->type); //Vrátí seřazené komentáře patřící k zobrazenému článku
public function getRelField() {
$ids = array();
foreach ($this->comments AS $comment) {
$ids[] = $comment->id;
}
return $ids;
}
Při odesílání komentáře, který má na nějaký navazovat pomocí tohoto pole vyhledám související ID, které je v databázi. Zároveň si pole posílám do šablony a můžu pomocí něj vazby vizuálně zobrazovat.
@duke: Zároveň jsem tam ještě udělal to, co píšeš. Pole v šabloně konvertuju do zašifrovaného stringu a uchovávám v hidden inputu. Po odeslání odpovědi na komentář kontroluji, zda-li je vazba stále platná.
Editoval Ecrazit (11. 9. 2012 16:42)
- duke
- Člen | 650
Když si tam zakóduješ tu tabulku, tak tě zas až tak moc nezajímá, jak se změnila, protože pro uložení potřebuješ pouze informace z původní tabulky. Jediné, co musíš zkontrolovat je, zda někdo mezi tím nesmazal příspěvek, na který se dotyčný odkazuje. Tzn. ze zakódované tabulky jen zjistíš ID odkazovaného příspěvku a ověříš, zda je platné.
Takže pokud jsi to myslel takto (a pokud jsem něco nepřehlédl), mělo by to stačit.