Foros del Web » Programando para Internet » PHP »

problemas con la paginacion

Estas en el tema de problemas con la paginacion en el foro de PHP en Foros del Web. no se cual es el problema esto de la paginacion me enreda un poco pero le estoy cogiendo el piso el codigo es el siguiente: ...
  #1 (permalink)  
Antiguo 11/06/2010, 11:04
Avatar de elchicho118  
Fecha de Ingreso: mayo-2010
Mensajes: 74
Antigüedad: 14 años
Puntos: 1
Pregunta problemas con la paginacion

no se cual es el problema esto de la paginacion me enreda un poco pero le estoy cogiendo el piso el codigo es el siguiente:

<?php
include("funciones.php");

$pagina = $_GET["pagina"];

if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $reg;
}
$tamaño_pagina=4;
$reg=2;

$con= conectarbd();

$registros= mysql_query("SELECT * FROM usuarios limit $inicio,$tamaño_pagina")
or die("Problemas en el select:".mysql_error());

$total_registros= mysql_num_rows($registros);
$total_paginas = ceil($total_registros / $tamaño_pagina);

while($articulo=mysql_fetch_array($registros)) {

echo "<b>".$articulo["nombre"]."</b><br>";
echo "<font color='#666666'>".$articulo["apellidos"]."</font><br><br><br>";

}

if(($pagina - 1) > 0) {
echo "<a href='paginacion3.php?pagina=".($pagina-1)."'>< Anterior</a> ";
}



for ($i=1; $i<=$total_paginas; $i++){
if ($pagina == $i) {
echo "<b>".$pagina."</b> ";
} else {
echo "<a href='paginacion3.php?pagina=$i'>$i</a> ";
}
}



if(($pagina + 1)<=$total_paginas) {
echo " <a href='paginacion3.php?pagina=".($pagina+1)."'>Sigu iente ></a>";
}

?>

no me funciona como deberia no me muestra los demas registros cuando le doy a siguiente

ademas cuando cambio la variable $tamaño_pagina=2 no me aparecen los link solo me aparece un numero 1 y no es un link
  #2 (permalink)  
Antiguo 11/06/2010, 11:27
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: problemas con la paginacion

calculas mal el dato de $inicio, también el $total_registros y por ultimo, usas caracteres especiales (muy posiblemente sean ilegales) en la variable $tamaño_pagina, podrías usar $tamano_pagina.

respecto al $inicio:

Código PHP:
Ver original
  1. $tamano_pagina=4;
  2.  
  3. $pagina=(isset($_GET['pagina'])&&is_numeric($_GET['pagina']))?$_GET['pagina']:1;
  4. $inicio=($pagina-1)*$tamano_pagina;
  5.  
  6.  
  7. $registros=mysql_query('SELECT * FROM usuarios limit '.$inicio.','.$tamano_pagina)
  8.     or die('Problemas en el select:'.mysql_error());


respecto a $total_registros, la calculas tomando en cuenta los resultados paginados, es decir, $total_registros nunca será mayor a $tamano_pagina a pesar de que tengas miles de registros.
  #3 (permalink)  
Antiguo 11/06/2010, 11:47
Avatar de elchicho118  
Fecha de Ingreso: mayo-2010
Mensajes: 74
Antigüedad: 14 años
Puntos: 1
Respuesta: problemas con la paginacion

solo entendy algunas cositas de lo demas ms quede en el aire

la verdad es que no comprendo bien esto de la paginacion si pudieran explicarme un poco mejor hacerca de lo que estoy haciendo mal
  #4 (permalink)  
Antiguo 11/06/2010, 11:51
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: problemas con la paginacion

necesitas checar la documentación de limit para entender cómo se hace el cálculo.
  #5 (permalink)  
Antiguo 11/06/2010, 12:04
Avatar de elchicho118  
Fecha de Ingreso: mayo-2010
Mensajes: 74
Antigüedad: 14 años
Puntos: 1
Respuesta: problemas con la paginacion

el problema es como hacer el for para que me presente las paginas numeradas
yo hago la paginacion que me presente el link de anterior y siguiente
pero para numerar las paginas como debo poner el for
este es el codigo de paginacion:

<?php
if (isset($_REQUEST['pos']))
$inicio=$_REQUEST['pos'];
else
$inicio=0;
?>
<html>
<head>
<title>Problema</title>
</head>
<body>

<?php
$conexion=mysql_connect("localhost","root","") or
die("Problemas en la conexion");
mysql_select_db("foro",$conexion) or
die("Problemas en la selección de la base de datos");
$registros=mysql_query("select * from usuarios
limit $inicio,2",$conexion) or
die("Problemas en el select:".mysql_error());
$num = mysql_num_rows($registros);
$impresos=0;
while ($reg=mysql_fetch_array($registros))
{
$impresos++;
echo "nombre:".$reg['nombre']."<br>";
echo "nick:".$reg['nick']."<br>";
echo "eMail:".$reg['email']."<br>";
echo "id:".$reg['id']."<br>";
echo "<hr>";
}
mysql_close($conexion);
if ($inicio==0)
echo "anteriores ";
else
{
$anterior=$inicio-2;
echo "<a href=\"paginacion.php?pos=$anterior\">Anteriores </a>";
}
if ($impresos==2)
{
$proximo=$inicio+2;
echo "<a href=\"paginacion.php?pos=$proximo\">Siguientes</a>";
}
else
echo "siguientes";
?>


</body>
</html>

ahora como debo hacer el for para que me funcione
  #6 (permalink)  
Antiguo 11/06/2010, 13:29
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: problemas con la paginacion

Primero, necesitas calcular el numero de registros totales que genera tu consulta, una opción (aplicada al primer script que publicaste) podría ser:

Código PHP:
Ver original
  1. $tregistros=mysql_query('SELECT count(*) con FROM usuarios');
  2. $total_registros=mysql_result($tregistros,0,0);

Sugerencia: trata de contrastar el código con la documentación, de ahí trata de entender la lógica; si a pesar de intentar lo anterior sigues en las mismas busca algún script paginador, debe haber cientos, incluso circulando en este foro.

Etiquetas: paginacion
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 17:11.