Foros del Web » Programando para Internet » PHP »

Paginacion en php

Estas en el tema de Paginacion en php en el foro de PHP en Foros del Web. Hola me gustaria que me ayuden a realizar una paginacion, resulta que tengo un pequeño sistema de comentarios padre hijo ocea se puede responder a ...
  #1 (permalink)  
Antiguo 27/05/2014, 10:25
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta Paginacion en php

Hola me gustaria que me ayuden a realizar una paginacion, resulta que tengo un pequeño sistema de comentarios padre hijo ocea se puede responder a un comentario algo parecido a lo que se hace en facebook , el problema esta en que al hacer la paginacion como yo se ocea desde una consulta de mysql poniendole LIMIT $variable captura las replicas como un registro lo que en teoria esta bien pero como son replicas se supone que tiene un comentario padre y ese comentario padre debe englobar las replicas como si fuera solo un registro, les dejo mi cod espero que me ayuden
Antes que nada la estructura de los mensajes que vendria a ser el include functions.php:

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,
            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'];
        
        
$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'].'">';
                echo  
'<div class="comment">';
                
?> 
                <?php
                
if($arr['cat_post'] !=){
                echo 
'<div class="waveTime">Hace '.$hace.'</div>';
                
                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><br><span id="contenido" >'.bbcode($arr['post_content']).'</span>
                </div>'
;
                
?>
                <?php 
                
if (isset($_SESSION['signed_in']))
{
                echo 
'<div class="replyLink">
                <a href="javascript:void(0);" onClick="addComment(this,\''
.$arr['post_id'].'\',\''.$user_id.'\',\''.$user_name.'\',\''.$user_foto.'\',\''.$topic_id.'\',\''.$topic_cat.'\');return false;">Responder</a>
                </div>'
;
                }
                }else{
            
$a_men=mysql_query("SELECT * FROM posts WHERE post_topic = '".$topic_id."' ")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 style="color:black;">'.$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>';
}]
aca incluyo el functions.php ocea el cod anterior e imprimo los mensajes:

Código PHP:
<?php
include 'functions.php';
$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,
                posts.post_id,
                posts.likes,
                posts.hates
                
                
                
                    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['temas'])." AND cat_post != 0 ORDER BY post_id");



$comments=array();
$js_history='';

while(
$row=mysql_fetch_assoc($comments_result))
{
    if(
$row['parent']==0){

$comments directly
        $comments
[$row['post_id']] = $row;
        
    }
    else
    {
        if(!isset(
$comments[$row['parent']])) continue;
        
        
$comments[$row['parent']]['replies'][] = $row;
        
    }
    
    
$js_history.='addHistory({id:"'.$row['post_id'].'"});'.PHP_EOL;

}

$js_history='<script type="text/javascript">
'
.$js_history.'
</script>'
;


?>
con esta funcion imprimo los mensajes :

Código PHP:
foreach($comments as $c)
    {
        
showComment($c);
        
// Showing each comment
    

ayudenme porfa de ante mano gracias.
  #2 (permalink)  
Antiguo 27/05/2014, 23:54
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: Paginacion en php

Bueno, yo tube un problema similar, ocupaba categorizar un array y cree una funcion para esto, imagino que puede servirte, solo se requieren de dos campos para que funcione, el identificador y el padre:

Código PHP:
<?php
/*
 * Estructura requerida del arreglo:
 * $arreglo = array(
 *     array(
 *         'campo_id'=>INT,
 *         'campo_padre'=>INT[,
 *         ...]
 *     ),
 *     ...]
 * )
 *
 * El arreglo sera modificado teniendo el 'campo_id' asociado a las filas
 *
 * El parametro "$campo_ordenar" me imagino pondras el que contiene la fecha de publicacion
 * Los parametros "$campo_id" y "$campo_padre" los nombres de los campos, repectivamente, dentro de las filas
 */
function categorize(&$arreglo$campo_ordenar false$modo_orden SORT_ASC$campo_id 'id'$campo_padre 'padre'){
    
// verificar que el arreglo sea valido y los campos id y padre existan
    
if(!is_array($arreglo) || count($arreglo)){
        return;
    }
    
$u $arreglo;
    
$u array_pop($u);
    if(!
is_array($u) || !array_key_exists($campo_id$u) || !array_key_exists($campo_padre$u)){
        return;
    }

    
// ordenar el arreglo segun el campo especificado
    
if($campo_ordenar && array_key_exists($campo_ordenar$u)){
        
$lista = array();
        foreach(
$arreglo as $indice => $fila){
            
$lista[$indice] = $fila[$campo_ordenar];
        }
        unset(
$indice$fila);
        
array_multisort($lista$modo_orden$arreglo);
        unset(
$lista);
    }
    unset(
$u);

    
// se crea el colector asignando el indice 0 como el padre principal donde arranca la busqueda de hijos
    
$colector = array(array());
    
$colector[0]['_NIVEL_'] = -1;
    
$colector[0]['_HIJOS_'] = 0;
    
$colector[0][$campo_padre] = -1;

    
// la funcion-variable que hace el trabajo
    
$busca_hijos = function(&$colector$arreglo$id_padre$campo_id$campo_padre$busca_hijos){
        
$x 0;
        foreach(
$arreglo as $indice => $fila){
            if(
$fila[$campo_padre] == $id_padre){
                
$colector[$id_padre]['_HIJOS_'] ++;
                
$fila['_HIJOS_'] = 0;
                
$fila['_NIVEL_'] = $colector[$id_padre]['_NIVEL_'] + 1;
                
$fila['_LUGAR_'] = $x 1;
                
$colector[$fila[$campo_id]] = $fila;
                unset(
$arreglo[$indice]);
                
$busca_hijos($colector$arreglo$fila[$campo_id], $campo_id$campo_padre$busca_hijos);
                
$final $fila[$campo_id];
                
$x ++;
            }
        }
        unset(
$indice$fila);
        if(
$x 1){
            
$colector[$final]['_LUGAR_'] = 3;
        }
        else if(
$x 0){
            
$colector[$final]['_LUGAR_'] = 0;
        }
    };
    
$busca_hijos($colector$arreglo0$campo_id$campo_padre$busca_hijos);
    unset(
$colector[0]);

    
// si "$colector" y "$arreglo" son diferentes es porque alguna fila quedo sin padre en algun mal manejo de datos al actualizar la tabla
    // estos "huerfanos" se agregan al final del nuevo "$arreglo"
    
if(count($arreglo) != count($colector)){
        foreach(
$arreglo as $fila){
            if(!
array_key_exists($fila[$campo_id], $colector)){
                
$fila['_HIJOS_'] = 0;
                
$fila['_NIVEL_'] = 0;
                
$fila['_LUGAR_'] = 0;
                
$colector[$fila[$campo_id]] = $fila;
            }
        }
        unset(
$fila);
    }

    
$arreglo $colector;
}
?>
Modo de uso:

Código PHP:
<?php
$consulta 
mysql_query("SELECT * FROM tabla"$conexion);
$lista = array();
while(
$fila mysql_fetch_assoc($consulta)){
    
$lista[] = $fila;
}
mysql_free_result($consulta);
unset(
$consulta$fila);

categorize($lista);

foreach(
$lista as $id => $datos){
    echo 
str_repeat('&nbsp; &nbsp;'$datos['_NIVEL_']) . $datos['mensaje'] .'<br />';
}
?>
Bueno espero te sirva, si lo usas nos cuentas que tal te fue.

Saludos!
__________________
PD: Los acentos fueron secuestrados.

Última edición por Atomycko; 28/05/2014 a las 00:00 Razón: El operador de comparacion en "if(count($arreglo) != count($colector))" era ">"
  #3 (permalink)  
Antiguo 28/05/2014, 00:08
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: Paginacion en php

Algo que no mencione es sobre los campos asignados por la funcion:

"_HIJOS_" el total de hijos (no incluye los nietos)
"_NIVEL_" el nivel a partir de 0 (padre = 0, hijo = 1, nieto = 2, etc.)
"_LUGAR_" el lugar en el rango de hijos: 0 = unico, 1 = primero, 2 = en medio y 3 = ultimo
__________________
PD: Los acentos fueron secuestrados.
  #4 (permalink)  
Antiguo 28/05/2014, 09:39
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
De acuerdo Respuesta: Paginacion en php

Muchas gracias voy a probarlo y te cuento como me fue ¡¡¡¡¡
  #5 (permalink)  
Antiguo 28/05/2014, 10:07
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Paginacion en php

Cita:
Iniciado por Atomycko Ver Mensaje
Algo que no mencione es sobre los campos asignados por la funcion:

"_HIJOS_" el total de hijos (no incluye los nietos)
"_NIVEL_" el nivel a partir de 0 (padre = 0, hijo = 1, nieto = 2, etc.)
"_LUGAR_" el lugar en el rango de hijos: 0 = unico, 1 = primero, 2 = en medio y 3 = ultimo
Funciona tal como quiero y mejor porque ahora hasta 3 rangos tiene el mio solo tenia hasta 2 sin embargo esto implica que tengo que modificar toda mi funcion =( , tendre que hacerlo, una pregunta mas ya probe y funciona entonces lo unico que tendre que paginar es el array, que pasa si quiero paginar el hijo = nivel 1 ??? como haria en ese caso???
  #6 (permalink)  
Antiguo 28/05/2014, 10:41
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Paginacion en php

Asu men con el codigo que me has pasado sigo con el mismo problema = a la funcion que tengo , no se puede paginar una funcion, desde la bd no lo intento porque me parece que sera el mismo resultado , solo dime que tengo que tomar para poder hacer la paginacion ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ porfa ¡¡¡
  #7 (permalink)  
Antiguo 31/05/2014, 18:02
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: Paginacion en php

Cita:
Iniciado por videlxu Ver Mensaje
Asu men con el codigo que me has pasado sigo con el mismo problema = a la funcion que tengo , no se puede paginar una funcion, desde la bd no lo intento porque me parece que sera el mismo resultado , solo dime que tengo que tomar para poder hacer la paginacion ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ porfa ¡¡¡
Bueno videlxu como te comentaba, realice esta funcion con un proposito diferente, el cual es categorizar un array y poder exponerlo en modo arbol, y por lo que mencionas de sistema de comentarios padre hijo crei que podria servirte.

La funcion solo requiere que le pases el arreglo bidimensional el cual deve tener 2 campos especificos, el que lo identifica y el que identifica a su padre, algo asi como:

Código PHP:
<?php
$arreglo 
= array(
    
=> array(
        
'id' => 1// campo identificador
        
'padre' => 0// campo identificador del padre
        
'autor' => 'Josefino',
        
'mensaje' => 'Mensaje...',
        
'fecha' => 1548964523 // valor unix (yo asi manejo las fechas, no se como lo haras tu)
    
),
    
=> array(
        
'id' => 2,
        
'padre' => 0,
        
'autor' => 'Gracielo',
        
'mensaje' => 'Mensaje...',
        
'fecha' => 1548984523
    
),
    
=> array(
        
'id' => 3,
        
'padre' => 0,
        
'autor' => 'Rogelia',
        
'mensaje' => 'Mensaje...',
        
'fecha' => 1548988523
    
),
    
=> array( // respuesta a mensaje 'id' => 2
        
'id' => 4,
        
'padre' => 2,
        
'autor' => 'Cacheton',
        
'mensaje' => 'Respuesta...',
        
'fecha' => 1548988623
    
),
    
=> array(
        
'id' => 5,
        
'padre' => 0,
        
'autor' => 'Caliman',
        
'mensaje' => 'mensaje...',
        
'fecha' => 1548988723
    
),
    
=> array( // respuesta a respuesta 'id' => 3
        
'id' => 6,
        
'padre' => 4,
        
'autor' => 'Caliman',
        
'mensaje' => 'Respuesta...',
        
'fecha' => 1548988823
    
)
);
?>
Al pasar el arreglo por la funcion, lo modifica ordenadolo para mostrarlo en modo arbol, y segun el campo especificado para ordenar, ademas los indices son reemplazados por el identificador de fila:

Código PHP:
<?php
categorize
(
    
$arreglo,
    
'fecha'// campo a ordenar
    
SORT_ASC// el modo a ordenar
    
'id'// nombre del campo identificador de fila
    
'padre' // nombre del campo identificador de fila padre
);
?>
El nuevo arreglo quedaria asi:

Código HTML:
Array
(
    [1] => Array
        (
            [id] => 1
            [padre] => 0
            [autor] => Josefino
            [mensaje] => Mensaje...
            [fecha] => 1548964523
            [__HIJOS__] => 0
            [__NIVEL__] => 0
            [__LUGAR__] => 1
        )

    [2] => Array
        (
            [id] => 2
            [padre] => 0
            [autor] => Gracielo
            [mensaje] => Mensaje...
            [fecha] => 1548984523
            [__HIJOS__] => 1
            [__NIVEL__] => 0
            [__LUGAR__] => 2
        )

    [4] => Array
        (
            [id] => 4
            [padre] => 2
            [autor] => Cacheton
            [mensaje] => Respuesta...
            [fecha] => 1548988623
            [__HIJOS__] => 1
            [__NIVEL__] => 1
            [__LUGAR__] => 0
        )

    [6] => Array
        (
            [id] => 6
            [padre] => 4
            [autor] => Caliman
            [mensaje] => Respuesta...
            [fecha] => 1548988823
            [__HIJOS__] => 0
            [__NIVEL__] => 2
            [__LUGAR__] => 0
        )

    [3] => Array
        (
            [id] => 3
            [padre] => 0
            [autor] => Rogelia
            [mensaje] => Mensaje...
            [fecha] => 1548988523
            [__HIJOS__] => 0
            [__NIVEL__] => 0
            [__LUGAR__] => 2
        )

    [5] => Array
        (
            [id] => 5
            [padre] => 0
            [autor] => Caliman
            [mensaje] => mensaje...
            [fecha] => 1548988723
            [__HIJOS__] => 0
            [__NIVEL__] => 0
            [__LUGAR__] => 3
        )

)
Ahora, para paginar un hijo como lo mencionas, tengo otra funcion la cual retorna un array con la descendencia de una fila, esta se deve llamar despues de categorize():

Código PHP:
<?php
/**
 * El parametro $id_fila de la cual se obtendra la descendencia
 * El parametro $todos para obtener no solo los hijos, tambien nietos, bistnietos, etc.
 */
function categorize_getChildren($arreglo$id_fila$todos false$campo_id 'id'$campo_padre 'padre'){
    
$colector = array();

    
// verificar que el arreglo sea valido y que la $id_fila y campos id y padre existan
    
if(!is_array($arreglo) ||
        
count($arreglo) ||
        !
array_key_exists($id_fila$arreglo) ||
        !
is_array($arreglo[$id_fila]) ||
        !
array_key_exists($campo_id$arreglo[$id_fila]) ||
        !
array_key_exists($campo_padre$arreglo[$id_fila])
    ){
        return 
$colector;
    }

    
// la funcion-variable que hace el trabajo
    
$buscar_hijos = function(&$colector$arreglo$id_fila$campo_id$campo_padre$buscar_hijos$todos false){
        foreach(
$arreglo as $indice => $fila){
            if(
$fila[$campo_padre] == $id_fila){
                
$colector[$fila[$campo_id]] = $fila;
                unset(
$arreglo[$indice]);
                if(
$todos){
                    
$buscar_hijos($colector$arreglo$fila[$campo_id], $campo_id$campo_padre$buscar_hijostrue);
                }
            }
        }
        unset(
$indice$fila);
    };
    
$buscar_hijos($colector$arreglo$id_fila$campo_id$campo_padre$buscar_hijos$todos);

    return 
$colector;
}
?>
Modo de uso:

Código PHP:
<?php
$hijos 
categorize_getChildren(
    
$arreglo,
    
2// id de fila de la cual se obtendra la descendencia
    
true// para obtener hijos, nietos, etc.
    
'id'// nombre del campo identificador de fila
    
'padre' // nombre del campo identificador de fila padre
);
?>
El resultado seria:

Código HTML:
Array
(
    [4] => Array
        (
            [id] => 4
            [padre] => 2
            [autor] => Cacheton
            [mensaje] => Respuesta...
            [fecha] => 1548988623
            [__HIJOS__] => 1
            [__NIVEL__] => 1
            [__LUGAR__] => 0
        )

    [6] => Array
        (
            [id] => 6
            [padre] => 4
            [autor] => Caliman
            [mensaje] => Respuesta...
            [fecha] => 1548988823
            [__HIJOS__] => 0
            [__NIVEL__] => 2
            [__LUGAR__] => 0
        )

)
Bueno espero esto te funcione.

Saludos!
__________________
PD: Los acentos fueron secuestrados.
  #8 (permalink)  
Antiguo 17/06/2014, 20:34
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Paginacion en php

Cita:
Iniciado por Atomycko Ver Mensaje
Bueno videlxu como te comentaba, realice esta funcion con un proposito diferente, el cual es categorizar un array y poder exponerlo en modo arbol, y por lo que mencionas de sistema de comentarios padre hijo crei que podria servirte.

La funcion solo requiere que le pases el arreglo bidimensional el cual deve tener 2 campos especificos, el que lo identifica y el que identifica a su padre, algo asi como:

Código PHP:
<?php
$arreglo 
= array(
    
=> array(
        
'id' => 1// campo identificador
        
'padre' => 0// campo identificador del padre
        
'autor' => 'Josefino',
        
'mensaje' => 'Mensaje...',
        
'fecha' => 1548964523 // valor unix (yo asi manejo las fechas, no se como lo haras tu)
    
),
    
=> array(
        
'id' => 2,
        
'padre' => 0,
        
'autor' => 'Gracielo',
        
'mensaje' => 'Mensaje...',
        
'fecha' => 1548984523
    
),
    
=> array(
        
'id' => 3,
        
'padre' => 0,
        
'autor' => 'Rogelia',
        
'mensaje' => 'Mensaje...',
        
'fecha' => 1548988523
    
),
    
=> array( // respuesta a mensaje 'id' => 2
        
'id' => 4,
        
'padre' => 2,
        
'autor' => 'Cacheton',
        
'mensaje' => 'Respuesta...',
        
'fecha' => 1548988623
    
),
    
=> array(
        
'id' => 5,
        
'padre' => 0,
        
'autor' => 'Caliman',
        
'mensaje' => 'mensaje...',
        
'fecha' => 1548988723
    
),
    
=> array( // respuesta a respuesta 'id' => 3
        
'id' => 6,
        
'padre' => 4,
        
'autor' => 'Caliman',
        
'mensaje' => 'Respuesta...',
        
'fecha' => 1548988823
    
)
);
?>
Al pasar el arreglo por la funcion, lo modifica ordenadolo para mostrarlo en modo arbol, y segun el campo especificado para ordenar, ademas los indices son reemplazados por el identificador de fila:

Código PHP:
<?php
categorize
(
    
$arreglo,
    
'fecha'// campo a ordenar
    
SORT_ASC// el modo a ordenar
    
'id'// nombre del campo identificador de fila
    
'padre' // nombre del campo identificador de fila padre
);
?>
El nuevo arreglo quedaria asi:

Código HTML:
Array
(
    [1] => Array
        (
            [id] => 1
            [padre] => 0
            [autor] => Josefino
            [mensaje] => Mensaje...
            [fecha] => 1548964523
            [__HIJOS__] => 0
            [__NIVEL__] => 0
            [__LUGAR__] => 1
        )

    [2] => Array
        (
            [id] => 2
            [padre] => 0
            [autor] => Gracielo
            [mensaje] => Mensaje...
            [fecha] => 1548984523
            [__HIJOS__] => 1
            [__NIVEL__] => 0
            [__LUGAR__] => 2
        )

    [4] => Array
        (
            [id] => 4
            [padre] => 2
            [autor] => Cacheton
            [mensaje] => Respuesta...
            [fecha] => 1548988623
            [__HIJOS__] => 1
            [__NIVEL__] => 1
            [__LUGAR__] => 0
        )

    [6] => Array
        (
            [id] => 6
            [padre] => 4
            [autor] => Caliman
            [mensaje] => Respuesta...
            [fecha] => 1548988823
            [__HIJOS__] => 0
            [__NIVEL__] => 2
            [__LUGAR__] => 0
        )

    [3] => Array
        (
            [id] => 3
            [padre] => 0
            [autor] => Rogelia
            [mensaje] => Mensaje...
            [fecha] => 1548988523
            [__HIJOS__] => 0
            [__NIVEL__] => 0
            [__LUGAR__] => 2
        )

    [5] => Array
        (
            [id] => 5
            [padre] => 0
            [autor] => Caliman
            [mensaje] => mensaje...
            [fecha] => 1548988723
            [__HIJOS__] => 0
            [__NIVEL__] => 0
            [__LUGAR__] => 3
        )

)
Ahora, para paginar un hijo como lo mencionas, tengo otra funcion la cual retorna un array con la descendencia de una fila, esta se deve llamar despues de categorize():

Código PHP:
<?php
/**
 * El parametro $id_fila de la cual se obtendra la descendencia
 * El parametro $todos para obtener no solo los hijos, tambien nietos, bistnietos, etc.
 */
function categorize_getChildren($arreglo$id_fila$todos false$campo_id 'id'$campo_padre 'padre'){
    
$colector = array();

    
// verificar que el arreglo sea valido y que la $id_fila y campos id y padre existan
    
if(!is_array($arreglo) ||
        
count($arreglo) ||
        !
array_key_exists($id_fila$arreglo) ||
        !
is_array($arreglo[$id_fila]) ||
        !
array_key_exists($campo_id$arreglo[$id_fila]) ||
        !
array_key_exists($campo_padre$arreglo[$id_fila])
    ){
        return 
$colector;
    }

    
// la funcion-variable que hace el trabajo
    
$buscar_hijos = function(&$colector$arreglo$id_fila$campo_id$campo_padre$buscar_hijos$todos false){
        foreach(
$arreglo as $indice => $fila){
            if(
$fila[$campo_padre] == $id_fila){
                
$colector[$fila[$campo_id]] = $fila;
                unset(
$arreglo[$indice]);
                if(
$todos){
                    
$buscar_hijos($colector$arreglo$fila[$campo_id], $campo_id$campo_padre$buscar_hijostrue);
                }
            }
        }
        unset(
$indice$fila);
    };
    
$buscar_hijos($colector$arreglo$id_fila$campo_id$campo_padre$buscar_hijos$todos);

    return 
$colector;
}
?>
Modo de uso:

Código PHP:
<?php
$hijos 
categorize_getChildren(
    
$arreglo,
    
2// id de fila de la cual se obtendra la descendencia
    
true// para obtener hijos, nietos, etc.
    
'id'// nombre del campo identificador de fila
    
'padre' // nombre del campo identificador de fila padre
);
?>
El resultado seria:

Código HTML:
Array
(
    [4] => Array
        (
            [id] => 4
            [padre] => 2
            [autor] => Cacheton
            [mensaje] => Respuesta...
            [fecha] => 1548988623
            [__HIJOS__] => 1
            [__NIVEL__] => 1
            [__LUGAR__] => 0
        )

    [6] => Array
        (
            [id] => 6
            [padre] => 4
            [autor] => Caliman
            [mensaje] => Respuesta...
            [fecha] => 1548988823
            [__HIJOS__] => 0
            [__NIVEL__] => 2
            [__LUGAR__] => 0
        )

)
Bueno espero esto te funcione.

Saludos!
Si me funciona y ya logre paginarlo esta muy bueno de antemano gracias me hubiera tomado mucho tiempo hacer algo similar, ahora tengo otro problema el cual es que al cargar un div con ajax no me carga el javascript que pesado salgo de uno y entro a otro xD gracias ¡¡¡

Etiquetas: mysql, paginacion, registro, select, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:57.