El código:
Código PHP:
<?
// RECOJES EL VALOR DE ID, PREVIAMENTE REVISAS QUE GET EXISTA
// Y QUE SEA UN NÚMERO, DE CUALQUIER OTRA FORMA ID DEBE SER IGUAL A 0
$id = (int)$_GET['id']; // if isset(...
// LA CONSULTA BUSCA EL ID, SACA EL NÚMERO ANTERIOR Y SIGUIENTE,
$query = mysql_query("
select
*,
(select max(id_foto) from galeria where id_foto < $id) minimo,
(select min(id_foto) from galeria where id_foto > $id) maximo
from galeria
where id_foto = $id");
$data = mysql_fetch_array($query);
if ($data) {
// ...
// MUESTRA LOS BOTONES DE NAVEGACIÓN CORRESPONDIENTES
if (!is_null($data['minimo'])) echo '<a href=index.php?seccion=imagen&id=' . $data['minimo'] . ' title="Anterior">ANTERIOR</a>';
if (!is_null($data['minimo']) && !is_null($data['maximo'])) echo ' ';
if (!is_null($data['maximo'])) echo '<a href=index.php?seccion=imagen&id=' . $data['maximo'] . ' title="Siguiente">SIGUIENTE</a>';
} else {
// scream_VERY_loud();
// SCREAM !!! ES BROMA. ALGUIEN SIGUIO UN ENLACE INVALIDO O
// QUISO MANIPULAR EL URL, POR LO QUE EL REGISTRO NO EXISTE
// BUSCA EL MENOR ID Y REDIRECCIONA PARA BUSCARLO.
$query = mysql_query("
select min(id_foto) minimo, count(*) cuenta
from galeria");
if ($data) {
if ($data['cuenta'] != 0)
// SI HAY REGISTROS REDIRECCIONA PARA BUSCAR EL MENOR
header('Location: index.php?seccion=imagen&id=' . $query['minimo']);
} else {
// LA BASE DE DATOS ESTÁ VACIA
// NOW_scream_VERY_loud();
}
}
?>
Ahora viene mi duda, el código anterior funciona a la perfección salvo para mostrar únicamente las imágenes pertenecientes a la misma categoría de la imagen que se está visualizando en el momento.
Así que mi pregunta es, ¿Cómo podrían los botones de anterior y siguiente enlazar solo a imágenes pertenecientes a la misma categoría de la imagen visualizada?
He probado con un LIKE al campo categoria (lógicamente el que guarda el valor de la categoría de la imagen), pero nada...
Pongo el código para que os hagais una idea:
Código PHP:
<?
// RECOJES EL VALOR DE ID, PREVIAMENTE REVISAS QUE GET EXISTA
// Y QUE SEA UN NÚMERO, DE CUALQUIER OTRA FORMA ID DEBE SER IGUAL A 0
$id = (int)$_GET['id']; // if isset(...
// LA CONSULTA BUSCA EL ID, SACA EL NÚMERO ANTERIOR Y SIGUIENTE,
$query = mysql_query("
select
*,
(select max(id_foto) from galeria where id_foto < $id) minimo,
(select min(id_foto) from galeria where id_foto > $id) maximo
from galeria
where id_foto = $id LIKE categoria = '$row[categoria]'");
$data = mysql_fetch_array($query);
if ($data) {
// ...
// MUESTRA LOS BOTONES DE NAVEGACIÓN CORRESPONDIENTES
if (!is_null($data['minimo'])) echo '<a href=index.php?seccion=imagen&id=' . $data['minimo'] . ' title="Anterior"><img src="./images/flechaiz.png" border="0" width="36" alt="Anterior" /></a>';
if (!is_null($data['minimo']) && !is_null($data['maximo'])) echo ' ';
if (!is_null($data['maximo'])) echo '<a href=index.php?seccion=imagen&id=' . $data['maximo'] . ' title="Siguiente"><img src="./images/flechade.png" border="0" width="36" alt="Siguiente" /></a>';
} else {
// scream_VERY_loud();
// SCREAM !!! ES BROMA. ALGUIEN SIGUIO UN ENLACE INVALIDO O
// QUISO MANIPULAR EL URL, POR LO QUE EL REGISTRO NO EXISTE
// BUSCA EL MENOR ID Y REDIRECCIONA PARA BUSCARLO.
$query = mysql_query("
select min(id_foto) minimo, count(*) cuenta
from galeria");
if ($data) {
if ($data['cuenta'] != 0)
// SI HAY REGISTROS REDIRECCIONA PARA BUSCAR EL MENOR
header('Location: index.php?seccion=imagen&id=' . $query['minimo']);
} else {
// LA BASE DE DATOS ESTÁ VACIA
// NOW_scream_VERY_loud();
}
}
?>
Un saludo y muchas gracias