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 < 1 || $pagina > $total_de_paginas){
$inicio = 0;
$pagina = 1;
}
if($pagina > 1){
$anterior = $pagina - 1;
$anterior = '<a href="?pagina='.$anterior.'"> « Anterior </a>';
}
if($pagina < $total_de_paginas){
$siguiente = $pagina + 1;
$siguiente = '<a href="?pagina='.$siguiente.'"> Siguiente » </a>';
}
if($total_de_paginas > 1){
for($i=1;$i<=$total_de_paginas;$i++){
if($i == 1 || ($pagina == 1 && $i == $pagina +2) || $i == $pagina -1 || $i == $pagina || $i == $pagina +1 || ($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;
}
}
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'];
?>
gracias de antemano