Autor Zpráva
Pavel Vodnář
Profil *
Ahojik, chtěl by sem se zeptat na jakém principu pracuje více hladinové přidávání komentářů, mám tím na mysli - když přidám první komentář, jak uděkat aby šlo komentovat např tento prní komentář a tak dále. Jak je to udělané v DB? Děkuji
Louka
Profil
Pavel Vodnář:
U každého komentáře si ukládám, na co reaguje a pak vypisuju rekurzivně strom té diskuse.
Pavel Vodnář
Profil *
Louka Rekurzivně? jak to myslíš?
Louka
Profil
Tabulka komentare:
id    autor    text    odpoved
1     Louka    Něco     /
2     Pavel    Něco2    1


A pak vypisuju, volám fci třeba vypis($odpoved) a ta je něco jako
function vypis($odpoved) {
  $vysl = mysql_query("select .... where odpoved = $odpoved");
  for ( ... ) {
  // vypis clanku
   echo " ... "
   
   // rekurze
   vypis($odpoved); // zde se do proměnné odpoved přiřadí hodnota sloupce odpoved v řádku komentu a vypíší se komenty reagující na ten aktuální
  }
}

vypis("/"); // zahájení
Kajman_
Profil *
Louka:
A není lepší vyčíst si najednou všechny komentáře ke články do pole a pak dělat výpis rekurzí jen nad tímto php polem?
okolojdouci
Profil *
Kajman:
A není lepší vyčíst si najednou všechny komentáře ke články do pole a pak dělat výpis rekurzí jen nad tímto php polem?

A to mě zajímá. Je to rychlejší? Řeším něco v principu podobného a odpověď by mi ušetřila nemálo času.
Louka
Profil
Nevím, přiznám se, že jsem to nezkoumal. Asi ano, ale bude to náročnější na paměť, protože po každém volání můžu zavolat mysql_free_result() a tím to uvolnit, když bys měl článek s 600 komentáři, je možná snažší to "kouskovat" - i když je jasné, že pokud by nikdo na nikoho neodpovídal, tak výsledek bude totožný.
Louka
Profil
No, nejspíš má Kajman_ pravdu, nevím. Jak to tedy je? Rád se nechám poučit.
ninja
Profil
Záleží na konkrétním případu, ale většinou bude rychlejší načíst všechny komentáře najednou, jak píše Kajman_. Obecně stromová struktura lze řešit v SQL databázi několika způsoby, kdy rekurze je jen jeden z nich a často ne ten optimální.
__construct
Profil
ninja:
Tu je odkaz na článok v češitne.
Louka:
Najefektívnejší spôsob je asi ukladanie do stromovej štruktúry.
Louka
Profil
__construct:
Díky, nastuduju si to, vypadá to zajímavě.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: