Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/03/2014, 14:54
videlxu
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta Respuesta: Paginacion con foreach

Cita:
Iniciado por ocp001a Ver Mensaje
Desconozco si $a en tu script es un arreglo o no, y tampoco sé que hace la función showComment, por lo que te sugiero indiques cómo obtienes los datos y qué quieres tener como salida, con el código que lleves.
Tienes razón, para comenzar es un sistema de comentarios, ocea se puede comentar y a la ves poner una replica ocea seria asi:

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'] !=){
                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>&nbsp;&nbsp;</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>&nbsp;-&nbsp;";
      
      for (
$i=1$i<=$paginas$i++) {
         if (
$i == $p)
            echo 
"<strong>".$i."</strong>&nbsp;";
         else 
            echo 
"<a href=\"topic.php?id=62&screen=$i\">$i</a>&nbsp;";
      }
      
      if (
$p<$paginas)
         echo 
"&nbsp;-&nbsp;<a href=\"topic.php?id=62&screen=" . ($p+1) . "\">Siguiente&nbsp;-&nbsp;</a>";
      echo 
'</div>';
return;
   } 
asi supuestamente saldria la paginacion :

Código PHP:
if (isset($_GET['screen'])){
      
$p $_GET['screen'];
  } else {
      
$p=1;
      }
   
paginar(showComment($a), 2$p); 
pero no salee ahora si yo defino un array :

ejemplo :
Código PHP:
 array(
    
clave  => valor,
    
clave2 => valor2,
    
clave3 => valor3,
    ...
    ) 
si sale la paginacion normal , alguna ayuda porfa¡ ¡¡¡¡ :SSSSSSSS me eh quedado estancado