Cita:
Iniciado por biktorbasket Hola zalito12,
Te pido disculpas por no haberte contestado (fallo mío). Estoy haciendo las dos opciones que me habéis indicado e intentando que funcionen, ya que las dos opciones son buenas me las voy a guardar y al intentar entenderlas y asi aprendo un poquito más sobre php que me hace mucha falta: D.
Uno de las partes que no entiendo es esta:
$_GET['p'] , creo que su función es que recibe por http p=(Numero de la página) y lo mete dentro de la variable página. (Pero no estoy seguro :) )
El código le tengo así:
Código PHP:
<?php
$raiz = "./";
$you_inicio = "http://img.youtube.com/vi/";
$you_fin = "/hqdefault.jpg";
include('lib/config.php');
include('lib/head.php');
include('lib/nav.php');
# Tamaño maximo por página de vídeos por página.
$tamano = 16;
# Recibe por http p=(Numero de la página) y lo mete dentro de la variable página.
$pagina = $_GET['p'];
# Comprobamos si existe la variable ($pagina), si está vacía, si NO es tipo integer y si es menor a 1.
# Si cumple una de las 4 funciones el resultado es 1.
if(!isset($pagina) || empty($pagina) || !is_int($pagina) || $pagina < 1){
$pagina = 1;
}
# Creamos un array con el total de los videos que hay almacenados en la tabla id_videos.
# y guardamos en la variable $total.
$total = mysql_num_rows(mysql_query("SELECT id_video FROM videos"));
# ceil — Redondear fracciones hacia arriba.
# divimos el total de videos de id_video entre el tamaño de la pagina (16)
# lo redondea hacia arriba y lo guardamos en numero_pagina.
$numero_pagina = ceil($total/$tamano);
# guardamos dentro de $ssql -> videos ordenados por id_video descendiente.
# limitado por tamaño (16) * el numero de página (Cambia según la página que nos encontremos.).
# y que muestre en cada página tamaño (16).
$ssql = mysql_query("SELECT * FROM videos ORDER BY id_video DESC LIMIT ".$tamano * $pagina ." , " . $tamano);
?>
<!-- Capas - container, container-videos, col -md-12 -->
<div class="container container-videos">
<div class="col-md-12">
<?php
# Variable i = 0
$i = 0;
# Hacemos un bucle con todo el contenido de $ssql.
while($fila = mysql_fetch_array($ssql)){
# Resto de $i dividido por 4 es igual a 0 continua creando div.row .
if($i % 4 == 0){
?>
<div class="row">
<?php
}
?>
<!-- div.col-md-3 -->
<div class='col-md-3'>
<a href="play.php?video=<?php echo $fila["id_video"];?>">
<img src="<?php echo $you_inicio . substr($fila["video_link"],-11) . $you_fin;?>" />
</a>
</div>
<!-- fin div.col-md-3 -->
<?php
# Resto de $i dividido por 4 es igual a 0 continua cierra el row.
if($i % 4 == 0){
?>
</div>
<!-- fin row -->
<?php
}
# Cada vez que el blucle pasa por aquí se le incremente 1 a la variable $i.
$i++;
}
?>
</div>
<!-- fin col-md-12 -->
<?php
# Enlaces para la página anterior, la página en la que nos encontramos y la página siguiente.
echo '<a href="/videos?p=.' . $pagina + 1 .'">Anterior</a>';
for($i = 0 ; $i < $numero_pagina ; $i++ ;){
echo '<a href="/videos?p='. $i .'">'. $i .'</a>';
}
echo '<a href="/videos?p=.' . $pagina + 1 .'">Siguiente</a>';
?>
</div>
<!-- fin container -->
<?php
include('/lib/endconfig.php"');
include('/lib/footer.php"');
?>
Me aparece el siguiente error al final, cuando comienza el buble
for, y no encuentro el error.
Código PHP:
Parse error: syntax error, unexpected ';', expecting ')' in C:wampwww2_video_gamers_esvideos.php on line 7
.
Lo primero, el error que comentas es en el for, pusiste un ';' de más, al final dónde se incrementa la variable.
Lo segundo creo que hay que cambiar la sentencia sql a esta:
Código PHP:
$ssql = mysql_query("SELECT * FROM videos ORDER BY id_video DESC LIMIT ".$tamano * ($pagina - 1) ." , " . $tamano);
Mira el manual de MySql para ver como funciona el limit, no vaya a ser que se pierda algún vídeo.
Tercero, hay que organizar un poco mejor la cabecera, lo hice un poquillo mal jeje
Código PHP:
# Tamaño maximo por página de vídeos por página.
$tamano = 16;
//AQUI NO SE CREA UN ARRAY, mysql_num_rows() devuelve el número de filas que genera la consulta, en este caso el total de vídeos ya que id_video es su clave primaria y nunca estará NULL
$total = mysql_num_rows(mysql_query("SELECT id_video FROM videos"));
# ceil — Redondear fracciones hacia arriba.
# divimos el total de videos de id_video entre el tamaño de la pagina (16)
# lo redondea hacia arriba y lo guardamos en numero_pagina.
$numero_pagina = ceil($total/$tamano);
# Recibe por http p=(Numero de la página) y lo mete dentro de la variable página.
# Comprobamos si existe la variable ($pagina), si está vacía, si NO es tipo integer y si es menor a 1.
# Si cumple una de las 4 funciones el resultado es 1.
$pagina = 1;
if(isset($_GET['p']) && !empty($_GET['p']) && is_int($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] <= $numero_pagina){
$pagina = $_GET['p'];
}
//Así hacemos mejores comprabaciones y si el número de página no es válido siempre irás a la primera
Ahora, $_GET['var'] te devuelve el valor de la variable globlal 'var' que reciba la página por el método GET.
Las variables por el método GET se propagan directamente en la URL por ejemplo:
www.miweb.com?p=1&media=video
En este caso una url con dos variables GET, p y media con valores 1 y video respectivamente.
Si te fijas a la hora de hacer la paginación indicas el número de página directamente en la url.
Espero que esté todo correcto.