Foros del Web » Programando para Internet » PHP »

error en paginacion de resultados

Estas en el tema de error en paginacion de resultados en el foro de PHP en Foros del Web. Hola a todos, tengo una funcion que hace de paginacion dentro del foro que estoy construyendo, y tengo un problema con el limit de mysql ...
  #1 (permalink)  
Antiguo 09/07/2012, 11:37
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Exclamación error en paginacion de resultados

Hola a todos, tengo una funcion que hace de paginacion dentro del foro que estoy construyendo, y tengo un problema con el limit de mysql en la funcion.

al cambiar el limit de 1 a 10 siempre me muestra solo un resultado y no diez como le he indicado.

es una funcion bastante buena para integrarlo con cualquier sistema, y lo estoy empleando para un foro open source que estoy desarrollando.

mis desarrollos son integraciones para usercake en mi pagina web.
www.ahaugas.com


porfavor necesito ayuda con el paginador, pongo el codigo completo para ver si me podeis ayudar y si a alguien le sirve pues que se sirva.

funcion de la paginacion
Código PHP:
//Display forum pagination
    
public function ForumPagination()
    {
        global 
$db,$db_table_prefix;
            
            
$sql "SELECT *
                    FROM "
.$db_table_prefix."Forum_Posts
                    "
;
                    
            
$result $db->sql_query($sql);
            
            
$limite           10;                            //Maximo de resultados por pagina
            
$total                 returns_result($sql);        //Obtenemos total de campos
            
$pagina           $_GET["pagina"];            //Obtenemos la pagina actual
            
$inicio           = ($pagina 1) * $limite;    
            
$total_de_paginas ceil($total/$limite);
                
            if(!
is_numeric($pagina) || empty($pagina) || $pagina || $pagina $total_de_paginas){
                
$inicio 0;
                
$pagina 1;
            }
            
            if(
$pagina 1){
                
$anterior $pagina 1
                
$anterior '<a href="?pagina='.$anterior.'"> &laquo; Anterior </a>';
            }
                
            if(
$pagina $total_de_paginas){
                
$siguiente $pagina 1
                
$siguiente '<a href="?pagina='.$siguiente.'"> Siguiente &raquo; </a>';    
            }
                
            if(
$total_de_paginas 1){
                for(
$i=1;$i<=$total_de_paginas;$i++){
                    if(
$i == || ($pagina == && $i == $pagina +2) || $i == $pagina -|| $i == $pagina || $i == $pagina +|| ($pagina == $total_de_paginas && $i == $pagina -2) || $i == $total_de_paginas ){
                        
$c = ($pagina == $i) ? '<span style="color:red">'.$i.'</span>' $i;
                        
$paginas .= '<a class="paginas" href="?pagina='.$i.'">'.$c.'</a>';
                        
                        } else { 
                        
                        
$paginas .= '-';
                    }
                }
                
                
$paginas preg_replace('#-{1,}#''...'$paginas);
            }
                
            
$sql_pag $sql." LIMIT ".$inicio.",".$limite."";
            
$q       mysql_query($sql_pag) or die(mysql_error());
            
$mostrar mysql_num_rows($q);
            if(
$total){
                while(
$fila mysql_fetch_assoc($q)){
                    
$datos[] = $fila;
                }
                    
                return array(
                
'mostrar'   => $mostrar
                
'total'     => $total
                
'anterior'  => $anterior
                
'siguiente' => $siguiente
                
'paginas'   => $paginas
                
'datos'     => $datos 
                
);
                
            } else {
            
                return 
null;
        }
    } 
y el metodo de llamada para la paginacion.
Código PHP:
            <?php
                    
//Se llama a la función, guardando su valor en una variable            
                    
$datos $forum->ForumPagination(); 

                    
//Se pregunta si el valor devuelto es array, 
                    //sino lo es, entonces retornamos false, para 'ahorrar recursos'
                    
if(!is_array($datos)) { return false; } 

                    
//Se hace un bucle de acuerdo a los registros que se mostrarán, en este caso serán de a 1
                    
for($registro_actual 0$registro_actual<count($datos['mostrar']); $registro_actual++)
                    {                         
                        
//Show records from forum tables
                        
echo $datos['datos'][$registro_actual]['Post_Content'];     
                        echo 
$datos['datos'][$registro_actual]['Post_Creator'];     
                        echo 
$datos['datos'][$registro_actual]['Post_Date']; 
                    }
                    
                    echo 
"<br />";
                    
                    
//Show buttons for navigation
                    
echo $datos['anterior'].$datos['paginas'].$datos['siguiente'];
            
?>
en un principio deberia de mostrar los 10 resultados en una array pero solo me muestra 1.

gracias de antemano
  #2 (permalink)  
Antiguo 09/07/2012, 12:24
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: error en paginacion de resultados

Estoy medio dormido, pero voy a intentar ver el error.

Primero verifiquemos si llegan los datos al for, hace un var_dump($datos); antes del return array.

Segundo antes de usar for podes utlizar foreach, ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $datos["datos"][]['titulo'] = "titulo1";
  3. $datos["datos"][]['titulo'] = "titulo2";
  4. $datos["datos"][]['titulo'] = "titulo3";
  5. $datos["datos"][]['titulo'] = "titulo4";
  6. var_dump($datos);
  7. foreach($datos["datos"] as $key){
  8.     echo $key["titulo"];   
  9. }
  10. ?>
  #3 (permalink)  
Antiguo 09/07/2012, 16:32
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Respuesta: error en paginacion de resultados

con lo que me has dicho esta bien y funciona bien, me muestra los resultados por pagina correctamente con limit.

gracias

Código PHP:
Ver original
  1. var_dump($datos);
  2. foreach($datos["datos"] as $key){
  3.     echo $key["titulo"];    
  4. }

pero no consigo averiguar porque no me funciona de la manera que tengo
  #4 (permalink)  
Antiguo 09/07/2012, 23:17
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: error en paginacion de resultados

Porque haces un count a un numero y no a un array, count($datos['mostrar']);

Para que funcione tiene que ser count($datos['datos']);

Saludos

Etiquetas: mysql, paginacion, registro, resultados, sql, variables
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 15:15.