Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2012, 11:37
Avatar de ahaugas
ahaugas
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 9 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