Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2005, 06:28
epiky
 
Fecha de Ingreso: septiembre-2005
Mensajes: 27
Antigüedad: 19 años, 1 mes
Puntos: 0
Listando thumbnails (de 5en5 según el id recibido)

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