Foros del Web » Programando para Internet » PHP »

Paginación

Estas en el tema de Paginación en el foro de PHP en Foros del Web. Estoy un poco perdido. Mi problema es que necesito paginar una consulta a la mysql, el ella tengo un listado de videos, pero estos videos ...
  #1 (permalink)  
Antiguo 05/09/2009, 09:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Paginación

Estoy un poco perdido. Mi problema es que necesito paginar una consulta a la mysql, el ella tengo un listado de videos, pero estos videos son enlaces a otras páginas. en definitiva tengo que hacer una consulta en la que salga el titulo y nombre del video y si pincho en el salga el video en la misma página.

haber si me podeis ayudar.
  #2 (permalink)  
Antiguo 06/09/2009, 22:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Busqueda Respuesta: Paginación

Hola

Bueno, pues lo que necesitas no es tan complicado
Lo que tienes que hacer es limitar la consulta de sql a los resultados que quieras ver e ir mostrandolos en un while

por ej, si tus videos son estos

video1, video2, video3, video4, video5

SELECT * FROM `videos` limit 0,2 te mostrará
video1
video2

SELECT * FROM `videos` limit 2,2 te mostrará
video3
video4
Porque?? pues porque el limit funciona de la siguiente manera
el primer parametro es desde que posición de registro vas a listar,
y el segundo parametro cuantos registros vas a ver, es decir, si cambiamos
el segundo parametro a 3 tendriamos esto

SELECT * FROM `videos` limit 2,3 te mostrará
video3
video4
video5

si te has fijado, el segundo valor viene siendo una constante, en cambio el primero es una variable, pues este va a cambiar dependiendo desde que registro queremos que nos muestre, y para eso podrias hacer una multiplicación de la constante por otra variable que seria, por ej, el numero de la página para que sea dinámico, así tendrías algo así

Código PHP:
<?php 
$conn 
mysql_connect("localhost","test","test");
mysql_select_db("test");
//La constante que nos dira cuantos vamos a ver siempre
$cuantosporpagina 2;
if( 
$_GET['pag'] == '' ){
    
$ver 0;
}else{
    
$ver $cuantosporpagina $_GET['pag'];  
}
//$ver nos da la posicion desde la cual veremos registros
$sql "SELECT titulo, nombre from videos LIMIT $ver, $cuantosporpagina";
$query mysql_query($sql,$conn);
echo 
"<table>";
//Si la consulta trajo datos
if( mysql_num_rows($query) > ){
    echo 
"<tr><td>Nombre</td><td>Titulo</td></tr>";
    
//While para mostrar los datos
    
while( $videos mysql_fetch_array($query) ){
    echo 
"<tr><td>".$videos['0']."</td>";
    echo 
"<td>".$videos['1']."</td></tr>";
    }
    echo 
"<tr>";
    
//Condiciones para ver la paginacion (Con anterior y siguiente)
    
if( $_GET['pag'] == '' || $_GET['pag'] == ){
        
$sig $_GET['pag'] + 1;
        echo 
"<td><a href='?pag=".$sig."'>Siguiente</a></td>";
    }
    else if( 
$_GET['pag'] >&& $ver <= $cuantosporpagina ){
        
$ant $_GET['pag'] - 1;
        echo 
"<td><a href='?pag=".$ant."'>Anterior</a></td>";
        
$sig $_GET['pag'] + 1;
        echo 
"<td><a href='?pag=".$sig."'>Siguiente</a></td>";
    }
    else if( 
$_GET['pag'] != '' && $ver >= $cuantosporpagina ){
        
$ant $_GET['pag'] - 1;
        echo 
"<td><a href='?pag=".$ant."'>Anterior</a></td>";
    }
    echo 
"</tr>";
}
//Si no trajo datos
else{
    echo 
"<tr><td>No hay datos</td></tr>";
}        
    echo 
"<table>";
?>
Pruebalo , espero te sirva
Y bueno, esto lo hice por pruebas y para darte un ejemplo de como debe funcionar,
pero le faltan algunas validaciones (si realizas buenas pruebas te daras cuenta), y pues
el resto te queda de tarea, o siempre puedes buscar paginadores ya hechos en la web
o incluso aquí en los foros!
Saludos

Última edición por mortiprogramador; 06/09/2009 a las 22:10 Razón: Adición
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 09:21.