Foros del Web » Programando para Internet » PHP »

paginador php

Estas en el tema de paginador php en el foro de PHP en Foros del Web. hola pues estoy haciendo un paginador en php y mysql. Es basicamente acceder a una BD y sacar resultados de 10 en 10 mostrados en ...
  #1 (permalink)  
Antiguo 02/11/2007, 10:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
paginador php

hola pues estoy haciendo un paginador en php y mysql. Es basicamente acceder a una BD y sacar resultados de 10 en 10 mostrados en una tabla.
Muestra los 10 primeros pero luego al darle a siguiente o cambiar a las paginas que salen no avanza, siempre se queda en la misma.

A ver si alguien puede ayudarme, gracias.

Código:
<html> 
<head> 
<title>Páginación de resultados</title> 
</head> 
<body> 
<? 
// Datos de conexión a la base 
$base="empresa"; 
$con=mysql_connect("localhost","root","castelar"); 
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 cod, concat_ws(', ',apellidos,nombre) as 'nombre completo',fecha_alta, sueldo FROM empleados LIMIT $inicial,$cantidad"; 
$cad = mysql_db_query($base,$pegar) or die (mysql_error()); 
 
$contar = "SELECT * FROM empleados"; 
$contarok= mysql_db_query($base,$contar); 
$total_records = mysql_num_rows($contarok); 
$pages = intval($total_records / $cantidad);

echo "<table align='center' bgcolor= '#EBF2FE' cellpadding=15 cellspacing=4 border=1> 
 
    <tr> 
        <td><b>Codigo</b></td>
        <td><b>Nombre Completo</b></td> 
        <td><b>Fecha alta</b></td>                
        <td><b>Sueldo</b></td> 
    </tr>"; 
 
// Imprimiendo los resultados 
while($row = mysql_fetch_array($cad)) { 

    echo "<tr>";

        echo "<td>" .$row['cod']."<br>"; 
        echo "<td>" .$row['nombre completo']."<br>";
        echo "<td>" .$row['fecha_alta']."<br>";
        echo "<td>" .$row['sueldo']."<br>"; 
    echo "</tr>";
 
}     
echo "</table>";    
 
 
 
// Cerramos la conexión a la base 
$con=mysql_close($con); 
 
// Creando los enlaces de paginación 
echo "<div align='center'>"; 
if ($pg != 0) { 
    
    $url = $pg - 1; 
    echo "<a href='$PHP_SELF?pg=".$url."'>&laquo; Anterior</a>&nbsp;"; 
} 

else { 
    echo " "; 
}
 
for ($i = 0; $i <= $pages; $i++) { 
        if ($i == $pg) { 
            
            if ($i == "0") { 
                echo "<b> 1 </b>"; 
            } 
            
            else { 
                $j = $i+1; 
                echo "<b> ".$j." </b>"; 
            } 
        } 
        
        else { 
            if ($i == "0") { 
                echo "<a href=$PHP_SELF?pg=".$i.">1</a> "; 
            } 

            else { 
                $j = $i+1; 
                echo "<a href='$PHP_SELF?pg=".$i."'>"; 
                echo $j."</a>&nbsp;"; 
            } 
        } 
}
 
if ($pg < $pages) { 
        $url = $pg + 1; 
        echo "<a href='$PHP_SELF?pg=".$url."'>Siguiente &raquo;</a>"; 
    } 

    else { 
        echo " "; 
    } 
    
    echo "</div>"; 
?> 
</body> 
</html>
  #2 (permalink)  
Antiguo 02/11/2007, 14:27
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: paginador php

Yo que tu le cambiaria el nombre a tus variables $url.

Porque si pg es distinto de 0 (o sea pagina 1) al link anterior le pone 0 (o sea asumamos que es 1 y queda en 0) y a la siguiente que deberia ser 2 solo le sumas 1 y vuelve a 1.

Trata por ahi si no, nos comentas de nuevo.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 30/11/2007, 07:04
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: paginador php

tengo el mismo problema y no se como solucionarlo

aqui el codigo

Código PHP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Noticias</title>
<style>
    body { font-family: arial; font-size:12px}
</style>
</head>
<?

function conectar() 

    
$base_de_datos "noticias";
    
$db_usuario "root"
    
$db_password ""
   
    if (!(
$link mysql_connect("localhost"$db_usuario$db_password))) 
    { 
        echo 
"Error conectando a la base de datos."
        exit(); 
    } 
    if (!
mysql_select_db($base_de_datos$link)) 
    { 
        echo 
"Error seleccionando la base de datos."
        exit(); 
    } 
    return 
$link


$db conectar();


$registros 5;

if (!
$pagina) { 
    
$inicio 0
    
$pagina 1

else { 
    
$inicio = ($pagina 1) * $registros



?>


<body>
    <?
    $resultados 
mysql_query("SELECT id FROM articulos ");
    
$total_registros mysql_num_rows($resultados); 
    
$resultados mysql_query("SELECT * FROM articulos  ORDER BY id  LIMIT $inicio, $registros");    
    
$total_paginas ceil($total_registros $registros); //redondeapara arriba                  

    
if($total_registros) {
    
    
        while(
$articulo=mysql_fetch_array($resultados)) {
            
            echo 
"<b>".$articulo["titulo"]."</b><br>";
            echo 
"<font color='#666666'>".$articulo["descripcion"]."</font><br><br><br>";
            
        }
        
    } else {
        echo 
"<font color='darkgray'>(sin resultados)</font>";
    }
    
    
mysql_free_result($resultados);                
    
    if(
$total_registros) {
        
        echo 
"<center>";
        
        if((
$pagina 1) > 0) {
            echo 
"<a href='paginacion.php?pagina=".($pagina-1)."'>< Anterior</a> ";
        }
        
/*enumero las paginas */
        
for ($i=1$i<=$total_paginas$i++){ 
            if (
$pagina == $i
                echo 
"<b>".$pagina."</b> "
            else
                echo 
"<a href='paginacion.php?pagina=$i'>$i</a> "
        }
      
        if((
$pagina 1)<=$total_paginas) {
            echo 
" <a href='paginacion.php?pagina=".($pagina+1)."'>Siguiente ></a>";
        }
        
        echo 
"</center>";
        
    }
    
?>
</body>
</html>
<? //mysql_close($db);?>
__________________
http://www.rollermountain.com
  #4 (permalink)  
Antiguo 30/11/2007, 09:03
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 18 años
Puntos: 1142
Re: paginador php

Buenas,

La páginación de resultados en php empleando mysql al principio puede ser algo... mmmmmmm complicada? Si no se tienen unos conocimientos solidos de programación. Pero realmente es sencillo, tan solo hay que jugar con estas variables:

$p=indicador de página actual / $total_records=nº total de páginas.

Código PHP:
if($pg>1){
// ... mostramos el enlace a anterior
   
$anterior $p-1;
   echo 
"<a href=\"$PHP_SELF?&p=$anterior\">Anterior</a>";
}

//Aqui colocas el código pra mostrar el de total de páginas 

$siguiente $p+1;
if(
siguiente$<$total_records){
// ... mostramos enlace a página siguiente
   
echo "<a href=\"$PHP_SELF?&p=$siguiente\">Siguiente</a>";

Si os continua fallando, el problema seguramente lo tendremos en la misma consulta. A ver que tal os va.

Saludos
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 12:16.