Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/03/2014, 20:03
Avatar de biktorbasket
biktorbasket
 
Fecha de Ingreso: junio-2013
Mensajes: 42
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: PHP/MYSQL - Paginacion, buble while ...

Cita:
Iniciado por zalito12 Ver Mensaje
Bueno, no sé como estarás trabjando con la información en tu web porque hay varias formas de hacerlo dependiendo de eso.
Una muy utilizada y seguramente de la que más ejemplos encuentres por la red es organizando bien las consultas a la BD.

-Una consulta que te de el total de videos que hay, con un COUNT por ejemplo o un num_rows.
-Con el total calculas cuantas páginas necesitas, en tu caso 16 vídeos por página: $total/16 y redondear hacia arriba no recuerdo cuál era la función. Te recomiendo guardar ese 16 en una variable también, por ejemplo $tam (numero vídeos por página).
-Ahora utilizas el método GET para ver en que página te hayas y hacer las consultas del tipo:
"SELECT * FROM videos LIMIT $tam*$pag, $tam", algo así te devuelve todos los vídeos de la página $pag si lo tienes todo bien.
-Con un bucle bien hecho haces saltos horizontales cada 4 vídeos.

Hay un sin fin de ejemplos por la web de esto pero haber si te hago algo rapidito aquí y se entiende:

Código PHP:
<?php  
$raiz 
"./"
$imgyoutube "http://img.youtube.com/vi/"
$imgyoutubedos "/hqdefault.jpg"
include(
'lib/config.php'); 
include(
'lib/head.php');  
include(
'lib/nav.php');  

$tam 16;
$pag $_GET['p']; //Cálculo de página
if(!isset($pag) || empty($pag || !is_int($pag) || $pag 1)){
   
$pag 1;
}

$total mysql_num_rows(mysql_query("SELECT id_video FROM videos")); //Total vídeos

$num_pag ceil($total/$tam);//Usar funcion de redondea ahcia arriba no reucerdo si era esta

$sql mysql_query("SELECT * FROM videos ORDER BY id_video DESC LIMIT ".$tam*$pag." , ".$tam);
?> 

<div class="container videos-index container-videos"> 
        <div class="col-md-12">

        <?php
            $i 
0;
            while(
$v mysql_fetch_array($sql)){
                if(
$i 0){
?>
            <div class="row"> 
         <?php
            
}
?>
            <div class='col-md-3'>
            <a href="play.php?video=<?php echo $fila["id_video"];?>">
                <img src="<?php echo $imgyoutube substr($fila["video_link"],-11) . $imgyoutubedos;?>" />
            </a>
            </div>
            <?php
                
if($i 0){
?>
            </div> 
         <?php
                
}
              
$i++;
             }
            
?> 

        </div>
<?php
echo '<a href="www.tuweb.com/videos?p=.'$pag+1.'">Anterior</a>';
for(
$i 0;$i<$num_pag;$i++;){
    echo 
'<a href="www.tuweb.com/videos?p='.$i.'">'.$i.'</a>';
}
echo 
'<a href="www.tuweb.com/videos?p=.'$pag+1.'">Siguiente</a>';
?>
</div> 

<?php include('lib/footer.php'); ?>
No sé si habrá algún fallo, lo he hecho rapidito y escrito directamente en el navegador jeje, pero la idea es esta.
A la hora de generar la paginación tienes que jugar con los IFS para crear cosas bonitas y controlar que desparezca el siguiente y el anterior y el link de la página en que estes, etc pero ya te lo dejo a ti para que practiques.

Lo primero gracias por contestar, este ejemplo me gusta bastante y no lo veo tan dificil.

No entiendo esta parte, el comienzo del buble. ¿La variable $v que utilidad tiene?

Código PHP:
<?php
            $i 
0;
            while(
$v mysql_fetch_array($ssql)){
                if(
$i 0){
        
?>
y justo me da error en la linea:

Código PHP:
if($i 0){