Foros del Web » Programando para Internet » PHP »

Problema para mostrar imágenes desde una b.d.

Estas en el tema de Problema para mostrar imágenes desde una b.d. en el foro de PHP en Foros del Web. Tengo un formulario en el q uno de los campos es una foto. El cógigo para cargar la foto es el siguiente: <FORM NAME="formulario" enctype="multipart/form-data" ...
  #1 (permalink)  
Antiguo 14/02/2005, 12:35
 
Fecha de Ingreso: febrero-2005
Mensajes: 26
Antigüedad: 12 años, 10 meses
Puntos: 0
Problema para mostrar imágenes desde una b.d.

Tengo un formulario en el q uno de los campos es una foto. El cógigo para cargar la foto es el siguiente:
<FORM NAME="formulario" enctype="multipart/form-data" METHOD="Post" ACTION="insertado.php">
...
<TD>Foto:</TD>
<TD ><INPUT TYPE=file value="Botón" name="Foto"></TD>
...
</FORM>

Una vez q hago el submit, me redirige a una página con el siguiente código, q inserta los elementos del form en la b.d.:
....
$sql = "INSERT INTO bd (Foto,...) ";
$sql .= "VALUES ('$Foto',...)";
$result = mysql_query($sql);

...
Hasta ahí supongo q está todo bien. El problema surge cuando en una página posterior quiero mostrar en una tabla todos los campos de la b.d., en la cual no consigo mostrar la foto.
El código es el siguiente:
$sql = "SELECT * FROM bd";
$result = mysql_query($sql, $link);

if ($row = mysql_fetch_array($result))
{
echo "<table border = '1'> \n";
mysql_field_seek($result,0);
while ($field = mysql_fetch_field($result))
{
echo "<td><b>$field->name</b></td> \n";
}
echo "</tr> \n";
do
{
echo "<tr> \n";
echo "<td>".$row["Campo1"]."</td> \n";
echo "<td>".$row["Foto"]."</td> \n";
echo "<td>".$row["CampoN"]."</td> \n";
echo "</tr> \n";
}
while ($row = mysql_fetch_array($result));

echo "</table> \n";
}
//El campo ''Foto" de la b.d. es de tipo BLOB.
Alguien sabría decirme cómo se debe hacer para q se muestre la foto??. Q está mal??
  #2 (permalink)  
Antiguo 14/02/2005, 14:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si tu imagen está en tu BD en formato binario (en tu campo BLOB) no puedes hacer:
echo "<td>".$row["Foto"]."</td> \n";

debes crear un script que lea ese campo de tu BD y genere las cabeceras HTTP adecuadas para indicar al cliente (navegador) que tipo de dato envias (sea una imagen ... un archivo de otro tipo .. por su formato MIME del mismo).

Tienes un ejemplo completo en este mini-tutorial:
http://www.forosdelweb.com/f18/tutorial-ejemplo-subir-archivos-bd-guardando-bd-binario-127775/

(fijtate en ver.php por ejemplo)

Un saludo,
  #3 (permalink)  
Antiguo 14/02/2005, 16:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 26
Antigüedad: 12 años, 10 meses
Puntos: 0
A ver, me he mirado el tutorial indicado, pero no termino d entenderlo (quizás pq soy un poco novata en esto).
Ahí aparece el ver.php, q luego es utilizado por listar.php
Yo simplemente quiero coger todos los elementos d la BD q cumplan un criterio, entre ellos habrá un campo d tipo archivo, y mostrarlos en una tabla. No hay nada + sencillo?? podrían orientarme??
  #4 (permalink)  
Antiguo 14/02/2005, 17:42
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 13 años
Puntos: 7
Cita:
No hay nada + sencillo?? podrían orientarme??
Si, pero no sé en cuanto pueda afectar a tu aplicación, tener en la base de datos sólo las rutas de las imágenes y en un directorio las imágenes en si.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño

Última edición por xknown; 14/02/2005 a las 18:09
  #5 (permalink)  
Antiguo 14/02/2005, 18:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 26
Antigüedad: 12 años, 10 meses
Puntos: 0
No sé exactamente a q t refieres con lo d cuánto pueda afectar. Lo cierto, es q yo no sé como afecta.

Simplemente tengo una BD q es rellenada mediante un formulario,en el q se introducen una serie d características y una foto descriptiva. Y quiero q a través d otro formulario un usuario, en función d un criterio de selección, pueda ver los campos del registro de la BD q cumplan dicho criterio, incluida la foto. Lo hago así pq me parece más comodo, pero dada mi inexperiencia no sé si habrá otro modo mejor d hacerlo.

No sé si me he explicado bien.
  #6 (permalink)  
Antiguo 14/02/2005, 18:13
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 13 años
Puntos: 7
Lo que te dije en el mensaje anterior es que la imágen no la guardes en la base de datos, si lo haces de ese modo entonces tienes que recuperar de la forma en que te indicó Cluster, te recomiendo guardar la imágen en un directorio de tu servidor y simplemente guardar las rutas de dichas imágenes en la base de datos, de ese modo tu base de datos será de menor tamaño y evitas todo el tráfico que implica recuperar dichas imágenes (campos blob).

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:52.