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";}
?>
Vaya rollo que he soltado, a ver si alguien me echa un cable.
Muchas gracias de antemano