Bem malta, venho pedir aqui ajuda aos gurus que dominam ai a cenas das arrays ![:D]()
ora bem, ando para aqui a desenvolver um sistema de comentarios, de forma a permitir respostas a comentario (child comments por assim dizer)
Ora, eu ate de certa forma, ja consegui meter isso a dar, o problema é que tou a usar a Yii framework e aquele codigo está um pouco
errado... o dito cujo é este:
Código (PHP):
nao se aflijam por nao conhecerem a framework, se eu conseguir um exemplo em php puro eu acho que ja me consigo safar!
ora isto renderiza uma lista ordenada html do genero:
Código (HTML):
o problema é que eu em vez de tar a returnar logo com os echos todos, eu queria retornar uma array, do genero:
![Imagem Colocada]()
Alguem me pode ajudar? sugerir algum codigo se possivel, ou uns tutoriais...
funçoes recursivas é uma area pouco explorada para mim, entao com arrays... da-me a volta a mioleira!
espero ter sido suficentemente explicito, e que me consigam ajudar

ora bem, ando para aqui a desenvolver um sistema de comentarios, de forma a permitir respostas a comentario (child comments por assim dizer)
Ora, eu ate de certa forma, ja consegui meter isso a dar, o problema é que tou a usar a Yii framework e aquele codigo está um pouco
errado... o dito cujo é este:
Código (PHP):
public function commentsRender($row,$level=1) {
$command = Yii::app()->db->createCommand()
->setFetchMode(PDO::FETCH_OBJ)
->select('*')
->from('comentario')
->where('parentID = :id', array(':id'=>$row['commentID'])); //isto é apenas o select
echo "<li class='comment '>";
echo "<div class='aut'>".$row['userID']."</div>";
echo "<div class='comment-body'>".$row['texto']."</div>";
echo "<div class='timestamp'>".$row['data']."</div>";
echo "<a href='#comment_form' class='reply' id='".$row['commentID']."'>Reply</a>";
$dataReader = $command->query(); //aqui basicamente faz a query
if($dataReader->rowCount > 0){ // aqui testa se o comentario tem childs
if ($level == 1) $level++;
while(($row = $dataReader->read())!==false) { //isto é como o tipico fetch_array
echo "<li class='well well-small' style='padding-left: " . (($level - 1) * 20) . "px;'>";
$this->commentsRender($row,$level+1);
}
echo "</div>";
}
echo "</li>";
}
(basei-me neste codigo: http://www.technabled.com/2009/06/how-to-multi-level-comments-in-php.html )$command = Yii::app()->db->createCommand()
->setFetchMode(PDO::FETCH_OBJ)
->select('*')
->from('comentario')
->where('parentID = :id', array(':id'=>$row['commentID'])); //isto é apenas o select
echo "<li class='comment '>";
echo "<div class='aut'>".$row['userID']."</div>";
echo "<div class='comment-body'>".$row['texto']."</div>";
echo "<div class='timestamp'>".$row['data']."</div>";
echo "<a href='#comment_form' class='reply' id='".$row['commentID']."'>Reply</a>";
$dataReader = $command->query(); //aqui basicamente faz a query
if($dataReader->rowCount > 0){ // aqui testa se o comentario tem childs
if ($level == 1) $level++;
while(($row = $dataReader->read())!==false) { //isto é como o tipico fetch_array
echo "<li class='well well-small' style='padding-left: " . (($level - 1) * 20) . "px;'>";
$this->commentsRender($row,$level+1);
}
echo "</div>";
}
echo "</li>";
}
nao se aflijam por nao conhecerem a framework, se eu conseguir um exemplo em php puro eu acho que ja me consigo safar!
ora isto renderiza uma lista ordenada html do genero:
Código (HTML):
<ul>
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment3</div>
<div class="timestamp">1384447010</div><a id="10" class="reply" href="#comment_form">Reply</a>
<ul style="padding-left: 20px;">
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment3.1</div>
<div class="timestamp">1384447035</div><a id="11" class="reply" href="#comment_form">Reply</a>
<ul style="padding-left: 40px;">
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment3.1.1</div>
<div class="timestamp">1384449678</div><a id="12" class="reply" href="#comment_form">Reply</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment2</div>
<div class="timestamp">1384433970</div><a id="8" class="reply" href="#comment_form">Reply</a>
</li>
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment1</div>
<div class="timestamp">1384433970</div><a id="9" class="reply" href="#comment_form">Reply</a>
</li>
</ul>
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment3</div>
<div class="timestamp">1384447010</div><a id="10" class="reply" href="#comment_form">Reply</a>
<ul style="padding-left: 20px;">
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment3.1</div>
<div class="timestamp">1384447035</div><a id="11" class="reply" href="#comment_form">Reply</a>
<ul style="padding-left: 40px;">
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment3.1.1</div>
<div class="timestamp">1384449678</div><a id="12" class="reply" href="#comment_form">Reply</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment2</div>
<div class="timestamp">1384433970</div><a id="8" class="reply" href="#comment_form">Reply</a>
</li>
<li class="comment ">
<div class="aut">1</div>
<div class="comment-body">comment1</div>
<div class="timestamp">1384433970</div><a id="9" class="reply" href="#comment_form">Reply</a>
</li>
</ul>
o problema é que eu em vez de tar a returnar logo com os echos todos, eu queria retornar uma array, do genero:

Alguem me pode ajudar? sugerir algum codigo se possivel, ou uns tutoriais...
funçoes recursivas é uma area pouco explorada para mim, entao com arrays... da-me a volta a mioleira!
espero ter sido suficentemente explicito, e que me consigam ajudar
