Foros del Web » Programando para Internet » PHP »

Problema

Estas en el tema de Problema en el foro de PHP en Foros del Web. Código PHP:  <html>      <head> <title>Páginación de resultados</title> </head> <body bgcolor=#FFFFFF>  <? // Datos de conexión a la base $base = "nombredelabase" ; $con = mysql_connect ( servidor , usuario , password ); mysql_select_db ( $base ...
  #1 (permalink)  
Antiguo 27/09/2003, 09:52
 
Fecha de Ingreso: agosto-2003
Ubicación: Mexico Df abajo del puente de municipio
Mensajes: 216
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Problema

Código PHP:
 <html>      <head>
<title>Páginación de resultados</title>
</head>
<body bgcolor=#FFFFFF> 
<?
// Datos de conexión a la base
$base="nombredelabase";
$con=mysql_connect(servidor,usuario,password);
mysql_select_db($base,$con);

if (!isset(
$pg))
$pg 0// $pg es la pagina actual
$cantidad=10// cantidad de resultados por página
$inicial $pg $cantidad;

$pegar "SELECT * FROM tabla ORDER BY titulo LIMIT $inicial,$cantidad";
$cad mysql_db_query($base,$pegar) or die (mysql_error());

$contar "SELECT * FROM tabla ORDER BY titulo"
$contarokmysql_db_query($base,$contar);
$total_records mysql_num_rows($contarok);
$pages intval($total_records $cantidad);

// Imprimiendo los resultados
while($array mysql_fetch_array($cad)) {
echo 
$array['titulo']."<br>";


// Cerramos la conexión a la base
$con=mysql_close($con);

// Creando los enlaces de paginación
echo "<p>";
if (
$pg <> 0)
{
$url $pg 1;
echo 
"<a href='paginar.php?pg=".$url."'>« Anterior</a> ";
}
else {
echo 
" ";
}

for (
$i 0$i<($pages 1); $i++) {
if (
$i == $pg) {
echo 
"<font face=Arial size=2 color=ff0000><b> $i </b></font>";
}
else {
echo 
"<a href='paginar.php?pg=".$i."'>".$i."</a> ";
}
}

if (
$pg $pages) {
$url $pg 1;
echo 
"<a href='paginar.php?pg=".$url."'>Siguiente »</a>";
}
else {
echo 
" ";
}
echo 
"</p>";
?>
</body>
</html>
Al intentar paginar los datos de la bd pues...
si tengo 2 datos y le pongo que pagine uno cada página...
se supone que me tiene que salir 2 página pero me salen 3.
la Ultima no tiene contenido...
Me explico¿?
  #2 (permalink)  
Antiguo 27/09/2003, 14:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Es cuestion de matematicas. Tu calculas el numero total de paginas con:
Código PHP:
$pages intval($total_records $cantidad); 
que lo que hace es eliminar los decimales.

Luego el bucle de paginas las haces desde 0 hasta $pages. En total estas mostrando $pages + 1 enlaces. La solucion para paginar solo de uno en uno seria cambiar la condicion del bucle, para que de una iteracion menos.

Pero entonces tendrias problemas con las paginaciones de mas de un registro por pagina.

Yo cambiaria la forma de calcular el numero total de paginas por:
Código PHP:
$pages ceil($total_records $cantidad); 
y cambiaria el for por:
Código PHP:
for ($i 0$i<$pages$i++) 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 27/09/2003, 14:48
 
Fecha de Ingreso: agosto-2003
Ubicación: Mexico Df abajo del puente de municipio
Mensajes: 216
Antigüedad: 21 años, 3 meses
Puntos: 0
Wow si salio con los números pero porque sigue apareciendo el siguiente en la última página¿?
  #4 (permalink)  
Antiguo 27/09/2003, 15:04
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Bien, es cuestion de matematicas y de que numeras las paginas de 0 a lo que sea. Si tienes 5 paginas, las paginas seran la 0, 1, 2, 3 y 4. Y fijate tu condicion:
Código PHP:
if ($pg $pages) { 
Fija te con el ejemplo y verasx que para $pg=4 (ultima pagina) sigue siendo cierta esa condicion. Asi que cambias la condicion a:
Código PHP:
if ($pg < ($pages 1)) { 
Como consejo, en estas cosas con operaciones matematicas, comparaciones y demas, es mejor hacer una "simulacion" a mano con unos valores para "ver" las condiciones. El problema se ve de una forma mas "visual".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 27/09/2003, 15:10
 
Fecha de Ingreso: agosto-2003
Ubicación: Mexico Df abajo del puente de municipio
Mensajes: 216
Antigüedad: 21 años, 3 meses
Puntos: 0
Wow
Gracias
muchas gracias
Bueno Bye
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 22:21.