Mostrar imagen

Estoy empezando con el php. Tengo una bbdd de productos con referencia (clave única), nombre, descripción y foto. En principio quería incluir la foto dentro de la bbdd (en un campo blob) pero me recomendaron que mejor subiera la foto al servidor y en la bbdd guardara la ubicación dentro del servidor... ¿es mejor así? De ser así... Como incluyo la ruta de la imagen en la bbdd.
En 2 lugar, como hago para mostrar un listado que aparezca la foto, ¿y al lado los datos?

1 respuesta

Respuesta
1
En efecto te han recomendado bien: puesto que la fotografía no es un elemento 'tratable' sobre el que puedas ordenar, buscar o calcular no tiene mucho sentido incorporar todos sus bytes a un campo y, debido a su tamaño, esto suele resentir la velocidad del gestor.
Por lo tanto, lo más práctico es disponer un directorio donde guardar esas imágenes, y guardar en un campo de la tabla el nombre del fichero de la imagen.
Por ejemplo, podríamos guardar una imagen en "imagenes/imagen1.jpg" y guardar en el campo simplemente "imagen1.jpg".
Podrías tener subdirectorios también y en ese caso deberías guardar el subdirectorio y el nombre de la imagen. Te recomiendo que uses caminos relativos y no absolutos de las rutas.
Para mostrar la foto sólo tienes que recuperar su nombre de la tabla y luego construir la etiqueta de imagen correspondiente:
echo '<img src="imagenes/' . $nombreimagen . '">';
echo 'Otras informaciones: ' . $otrosdatos;
Gracias por tu ayuda, lo he probado y funciona. Pero ahora me surge otro problema, para subir la imagen al servidor tengo un formulario en el que se pide una referencia y la imagen a subir. Pues bien, como hago para que la imagen subida se llame en el servidor referencia.jpg (donde referencia es la introducida por el usuario) porque he probado con copy y la sube, pero no incluye la extensión .jpg
Hasta ahora he usado para subir las imágenes:
copy($_FILES['foto'][tmp_name'],$_FILES['foto']['name']
Lo que haces es correcto, y deberías obtener el fichero con el nombre original incluida la extensión. Es extraño que no sea así.
Puedes usar move_uploaded_file en lugar de copy, a ver si te funciona mejor:
http://es.php.net/manual/es/function.move-uploaded-file.php
Creo que no me he explicado bien, soy un pelín torpe, tengo una string llamada $referencia, que será el nombre de la imagen, pero si uso
copy($_files['tmp_name'],$referencia) me sube el archivo pero sin incluirle la extensión .jpg
Como hago para añadirle a $referencia la extensión .jpg y también la ruta del directorio imagenes/
Gracias de nuevo
Para lo que dices, simplemente deberías concatenar a la cadena del nombre del fichero ($referencia supongo) el nombre del directorio y de la extensión:
<?php
copy($_FILES['tmp_name'], 'imagenes/' . $referencia . '.jpg');
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas