problemas con imagen

LLANERO
09 de Agosto del 2005
Hola a todos, tengo en problema de imprimir una imagen desde una tabla mysql, solo me aparece el recudro de la imagen con una X roja. Utilice la libreria gd2, y no funciona. que pued o hacer. No puedo guardar la ruta de la imagen

Zelda Predator
09 de Agosto del 2005
Hola,

Tienes que asegurarte de que la imagen se introduce en la tabla mediante los tags correspondientes de HTML.

Yo lo haria asi:

Supongamos que has creado una base de datos con un campo autonumerico ID, otro campo varchar para meter el tipo de la imagen llamado MIME y un tercer campo BLOB para meter la imagen llamado FOTO1.

1. -Crearia un fichero llamado "verblob.php" cuya función seria conectarse a la db y leer la foto que debe mostrar (ese dato se lo pasaremos por URL desde la página que contiene la tabla donde ha de aparecer la imagen).

2.- En la página donde debe aparecer la tabla con las imágenes, pondria:
echo "<table width=100% align=center border=0 cellspacing=2 bgcolor=#FFFFFF>";
while ($array = mysql_fetch_array($cad))
{
echo "<tr><td><img src=verblob.php?idfoto=",$array[ID],"/></td><tr>";
...
...
}

Asi se iria construyendo la tabla con tantas imagenes como tengas almacenadas en tu db.


Aquí te pongo un ejemplo del fichero verblob.php:

<?php
/*
* Mostrar una imagen desde blob mysql usando PHP
*
*/

// Control errores
error_reporting(E_ALL);

//Variables para la conexión a la db
$host="localhost";
$user="eluser";
$pass="elpassword";
$db="ladb";
$tabla="latabla";

// Parámetros para recuperar la imagen
# Recuperamos el parámetro GET con el id único de la foto que queremos mostrar
$idfoto = (isset($_GET["idfoto"])) ? $_GET["idfoto"] : exit();


// Asignamos a la variable campo el nombre real del campo que contiene
// la foto en la db
$campo = "FOTO1";

// Recuperamos la foto y el MIME de la tabla
$sql = "SELECT $campo, MIME FROM $tabla WHERE ID = $idfoto";

# Conexión a la base de datos
$con=mysql_connect($host,$user,$pass);
mysql_select_db($db,$con);

$conn = mysql_query($sql, $con) or die(mysql_error($con));
$datos = mysql_fetch_array($conn);

// La imagen
$imagen = $datos[0];
// El mime type de la imagen
$mime = $datos[1];

// Gracias a esta cabecera, podemos ver la imagen
// que acabamos de recuperar del campo blob
header("Content-Type: $mime");
// Muestra la imagen
echo $imagen;
?>

De esta manera, en realidad lo que cargas en cada celda es el fichero verblob.php con el ID correspondiente a cada registro. Es pués el fichero verblob.php el que se encarga de mostrar la imagen, mediante la etiqueta header.

Espero que te sirva, aunque deberias optimizarlo liberando memoria y todo eso.