buenassss os explico un poco el problema que tengo a ver si me sabeis dar alguna solución.
Tengo en mi base de datos una tabla que contiene todos los datos de un producto y 4*3 campos relacionados con el ejemplo propuesto por Cluster, el del almacenamiento de archivos en la db (binario) Estos doce campos contienen la información binaria, el tamaño y el peso de las cuatro fotos (3+1tumbnail) que pongo por cada producto. Hasta aqui ok?
Bueno, ya están todos los datos y las imágenes metididitas y jugando (viciándome) he hecho unos listados muy majetes (parece mentira)
Ahora estoy liado con la página para visualizar las características/imágenes de cada articulo y me gustaría que antes de soltar todo el rollo de las imágenes grandes, nombre del articulo, descripción, precio...
saliese un conjunto de 5 miniaturas: echo rápido y mal, el diseño sería algo parecido a esto
Ok, mi problema: tengo un script que devuelve la miniatura de una imagen al pasarle su id, la tabla donde se encuentra, y los campos relacionados con el tipo y la información (que foto miniaturizar).
¿Cómo podría sacar esas cinco miniaturas (id-2,id-1,id,id+1,id+2) aun visualizando la imagen con id=1? (no existe id=id-2 si id=1) ¿habría posibilidad de mostrar una miniatura con un "no hay imagen"?
Este es el script en cuestión:
Código PHP:
<?php
if(isset($_GET['id'])&&($_GET['tabla'])&&($_GET['fotob'])&&($_GET['fotot'])) {
require ("conecta.php");
$id = $_GET['id'];
$tabla = $_GET['tabla'];
$fotob = $_GET['fotob'];
$fotot = $_GET['fotot'];
$sql = "SELECT $fotob,$fotot FROM $tabla WHERE id_articulo = $id";
//Hacemos la consulta y creamos una matriz con los resultados elegidos
$consulta = mysql_query($sql,$conexion);
//Mostramos la imagen con su correspondiente cabecera
header("Content-type: $fotot");
$imagen = mysql_result($consulta,0,"$fotob");
// Generar el thumbnail:
// Se crea la imagen desde el campo binario de la BD
$img = imagecreatefromstring($imagen);
// Tamaño del Thumbanil (de la imagen a generar ..)
$picsize = 50;
// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($img);
$new_h = imagesy($img);
// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;
// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);
// Se crea la mascara de la imagen nueva
$dst_img = ImageCreateTrueColor($new_w,$new_h);
// Se copia y reajusta el nuevo tamaño en la nueva imagen.
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img));
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG
// El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen.
imagejpeg($dst_img,'',100);
//Liberamos las variables y cerramos la conexion
mysql_free_result($consulta);
mysql_close($conexion);
}
else{
echo "Faltan parametros o las cadenas de introdución son incorrectas";}
?>
Nose, esto se me atraganta: se me ocurrió ofrecer esta alternativa con un "or die(..." cuando hace la consulta si el id no existe pero no se por donde cogerlo. Además, si borro un registro intermedio esto funcionaría mal no?
Vaya rollo que he soltado, a ver si alguien me echa un cable.
Muchas gracias de antemano