Autor Zpráva
Taps
Profil
Zdravím, na traverzování stromu používám níže uvedený kod
 if($reakce>0){
mysql_query("START TRANSACTION");
$row = mysql_fetch_assoc(mysql_query("SELECT * FROM prispevky WHERE id = '$reakce' FOR UPDATE"));
mysql_query("UPDATE prispevky SET lft = lft + 2 WHERE lft > $row[rgt]");
mysql_query("UPDATE prispevky SET rgt = rgt + 2 WHERE rgt >= $row[rgt]");
mysql_query("INSERT INTO prispevky (lft, rgt, hloubka,id_reakce,id_tematu,nazev,zprava,autor,datum) VALUES 
($row[rgt], $row[rgt]+1, $row[hloubka]+1, '$reakce','$tema','$nazev','$prispevek','$login',NOW())") ;
mysql_query("COMMIT");
              }
      
else{
mysql_query("INSERT INTO prispevky (lft, rgt, hloubka,id_reakce,id_tematu,nazev,zprava,autor,datum) SELECT IFNULL(MAX(rgt), 0) + 1, IFNULL(MAX(rgt), 0) + 2, 0,'$reakce','$tema','$nazev','$prispevek','$login',NOW() FROM prispevky");

              }
Tento kod jsem převzal z http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php. Mohl by mi někdo poradi jak tento kod upravit tak, aby se mi nově založené příspěvky řadily na začátek výpisu. V současné době se mi nově založený příspěvek zobrazí až na konci výpisu z databáze.

Výpis provádím pomocí
$result = mysql_query("SELECT * FROM strom ORDER BY lft");
Joker
Profil
Taps:
$result = mysql_query("SELECT * FROM strom ORDER BY lft DESC");
Taps
Profil
Joker:
když použiji DESC, tak se mi obrátí celý výpis, a celou diskusi bych musel pročítat z konce stránky, ale já chci jen to, aby se mi rodičovské příspěvky zapisovali na začátek (řazení reakcí už bylo v pořádku)
Kajman
Profil
Nejsem si jistý, ale řádek 12 to dává na konec. Za začátek to možná dá
... SELECT IFNULL(MIN(lft), 3) - 2 1, IFNULL(MIN(lft), 3) - 1, ...
Jen ty dva sloupce musí být nastavené jako signed.
Taps
Profil
Kajman:
Děkuji

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: