Resuelto!
Hay que cambiar el segundo IF que está en el código por:
Código PHP:
if ($result[$i]['id'] == $result[$i+1]['parentid'])
$str .= ', children:[';
else {
$str .= ', leaf:true}';
$tmp = ($i==0 ? 0 : $i-1);
// cuando hay varios records al mismo nivel me muevo al primero
while ($i != $tmp && $result[$tmp]['parentid'] == $result[$i]['parentid']) {
$tmp--;
}
// cierro los "children" abiertos
while ($result[$tmp]['parentid'] != $result[$i+1]['parentid']) {
$str .= ']}';
$tmp--;
}
$str .= ',';
}
Quizas haya que depurarlo un poco, pero al menos funciona ;)
Saludos y gracias,
Silver