COMENTARIO(PADRE)
------------------------------------------------
COMENTARIO(HIJO)
---------------------------------------------------
la idea es hacer la paginacion agrupando tanto al padre y al hijo para que asi si hay 20 replicas no lo cuente como un registro , intente hacerlo desde la consulta poniendo limit $variable $variable me sale normal pero no como quiero porque tambien me cuenta los registros (HIJO) ocea si pongo un limite de 10 entonces si hay 10 comentarios pero en varios de esos hay replicas las replicas se pierden por eso la idea es paginarlo desde el mismo foreach, muchas gracias espero me ayudes.
Código PHP:
<?php
function showComment($arr)
{
date_default_timezone_set("America/Lima");
$hace = new tiempoTrasncurrido($arr['post_date'],'s');
if (isset($_SESSION['signed_in']))
{
$comments_resultadou = mysql_query("SELECT *
FROM
users
WHERE user_id = ".$_SESSION['user_id']."");
while($rowu=mysql_fetch_assoc($comments_resultadou)){
$user_id = $rowu['user_id'];
$user_name = $rowu['user_name'];
$user_foto = $rowu['user_foto'];
}
}
$sql = "SELECT
topic_id,
topic_subject,
topic_cat,
topic_by,
media,
total_estrellas,
votos
FROM
topics
WHERE
topics.topic_id = " . mysql_real_escape_string($_GET['id']);
$result = mysql_query($sql);
while($rowtop = mysql_fetch_assoc($result))
{
$topic_cat = $rowtop['topic_cat'];
$topic_id = $rowtop['topic_id'];
$topic_by = $rowtop['topic_by'];
$num=mysql_query("SELECT * FROM posts WHERE post_topic = '".$topic_id."' ")or die(mysql_error());
$numeromsj=mysql_num_rows($num);
$totmsj = $numeromsj - 1;
echo '<div class="waveComment com-'.$arr['post_id'].'">';
if($arr['post_by'] != $topic_by || $arr['cat_post'] == '0'){
echo '<div class="comment">';
}else{
echo '<div class="commentespecial">';
}
?>
<?php
if($arr['cat_post'] !=0 ){
echo '<div class="commentAvatar">
<img src="imagen/user/'.$arr['user_foto'].'" class="user_comment" alt="'.$arr['usr'].'" />
</div>
<div class="commentText">
<span class="name">@<a href="perfil.php?id='.$arr['user_id'].'">'.$arr['usr'].'</a> </span><span class="time">Hace '.$hace.'</span>';
if (isset($_SESSION['signed_in']))
{
echo '<span class="menuboton"><div class="replyLink"><a class="classname2" ><img src="imagen/icono/denunciar.png" /></a></div><div class="replyLink"><a class="classname"><img src="imagen/icono/eliminar.png" /></a></div><div class="replyLink"><a class="classname"><img src="imagen/icono/bloquear.png" /></a></div><div class="replyLink">';
if ($arr['parent']==0){
echo '<a href="javascript:void(0);" class="classname" onClick="addComment(this,\''.$arr['post_id'].'\',\''.$user_id.'\',\''.$user_name.'\',\''.$user_foto.'\',\''.$topic_id.'\',\''.$topic_cat.'\');area(\'ta\');return false;"><img src="imagen/icono/responder.png" /></a>';
}else{
echo '<a href="javascript:void(0);" class="classname" onClick="addCommentar(this,\''.$arr['parent'].'\',\''.$user_id.'\',\''.$user_name.'\',\''.$user_foto.'\',\''.$topic_id.'\',\''.$topic_cat.'\');usuario(\''.$arr['user_name'].'\',\'ta\');return false;"><img src="imagen/icono/responder.png" /></a>';
}
echo '</div><div class="replyLink"><a class="classname"><img src="imagen/icono/manitoabajo.png" /></a></div><div class="replyLink"><a class="classname3"><img src="imagen/icono/manitoarriba.png" /></a></div></span>';
}
echo '<br><br><span id="contenido" >';
echo bbcode($arr['post_content']);
echo '</span></div>';
?>
<?php
}else{
$a_men=mysql_query("SELECT * FROM posts WHERE post_topic = '".$topic_id."' AND parent = 0 ")or die(mysql_error());
$numero_men=mysql_num_rows($a_men);
if($numero_men <= 1){
echo '<div class="totalmsj" ><div id="capa">No hay Comentarios.</div></div>';
}else{
$totalmsj = $numero_men-1;
echo '<div class="totalmsj" ><div id="capa"><strong class="totalmsj">'.$totalmsj.' comentarios</strong></div></div>';
}
}
?>
<?php
echo '<div class="clear"></div></div>';
}
// Output the comment, and its replies, if any
if(isset($arr['replies']))
{
foreach($arr['replies'] as $r)
showComment($r);
}
echo '</div>';
}
$comments_result = mysql_query("SELECT posts.post_id,
posts.post_content,
posts.post_date,
users.user_id,
users.user_name,
users.foto_level,
users.user_ciudad,
users.user_foto,
users.foto_firma,
users.user_date,
users.user_level,
posts.cat_post,
posts.post_by,
posts.parent,
posts.usr
FROM
posts
LEFT JOIN
users
ON
posts.post_by = users.user_id
LEFT JOIN
categories
ON
posts.cat_post = categories.cat_id
WHERE
posts.post_topic = " . mysql_real_escape_string($_GET['id'])." ORDER BY post_id");
// Selecting all the comments ordered by id in ascending order
$comments=array();
$js_history='';
while($row=mysql_fetch_assoc($comments_result))
{
if($row['parent']==0){
// If the comment is not a reply to a previous comment, put it into $comments directly
$comments[$row['post_id']] = $row;
}
else
{
if(!isset($comments[$row['parent']])) continue;
$comments[$row['parent']]['replies'][] = $row;
// If it is a reply, put it in the 'replies' property of its parent
}
foreach($comments as $a)
{
showComment($a);
}
para hacer la paginacion encontre esto que funciona perfectamente desde un array pero en esta funcion con array hablo de showComment($a) no sale no entiendo porque por fa ayuda :
Código PHP:
function paginar($v, $l, $p) {
// DEFINIMOS LA CANTIDAD DE PÁGINAS
$paginas = ceil(count($v) / $l);
// CONDICION DE INICIO
$inicio = ($p-1)*$l;
// CONDICION DE FINAL
$final = $p*$l;
// MOSTRAMOS LOS ITEMS RESPECTIVOS
echo '<div id="resultados">';
for ($i=$inicio; $i<$final; $i++) {
if (isset($v[$i]))
echo "<div id=\"item\">$i.- $v[$i]</div>";
else
break;
}
echo '</div>';
// LISTAMOS LAS PÁGINAS
echo '<div id="paginas">';
if ($p>1)
echo "<a href=\"topic.php?id=62&screen=" . ($p-1) . "\">Anterior</a> - ";
for ($i=1; $i<=$paginas; $i++) {
if ($i == $p)
echo "<strong>".$i."</strong> ";
else
echo "<a href=\"topic.php?id=62&screen=$i\">$i</a> ";
}
if ($p<$paginas)
echo " - <a href=\"topic.php?id=62&screen=" . ($p+1) . "\">Siguiente - </a>";
echo '</div>';
return;
}
supuestamente saldria la paginacion :
Código PHP:
if (isset($_GET['screen'])){
$p = $_GET['screen'];
} else {
$p=1;
}
paginar(showComment($a), 2, $p);
Sin embargo no sale porque showComment es una funcion si solo le pongo $a entonces sale pero no la informacion que quiero , poniendo showComment($a) sale la informacion que quiero pero no da la paginacion. ayudaa ¡¡
