Guarda imágenes en base de datos

Estoy construyendo mi sitio y necesito
Guardar imágenes como parte de los mantenimientos de los artículos de mi sitio. Como puedo hacer para guardar imágenes en Sql server 2000 en DreamWeaver, y también como las despliego de la base de datos a una forma.

1 respuesta

Respuesta
1
No tengo ni idea de SQL Server 2000. Yo suelo programar directamente usando un editor de texto cualquiera y por eso sólo sé manejar DreamWeaver lo justo.
Si te sirve de algo puedes adaptar el siguiente código:
Lo primero de todo necesitas crear un formulario para solicitar la imagen que quieres enviar:
<form method="post" enctype="multipart/form-data">
<input type="file" name="img">
<input type="text" name="id">
<input type="submit" name="submit" value="Enviar">
</form>
El ID que se pide es un identificador de esa imagen, un número, nombre, etc. Tiene que ser único. No puede haber varias imágenes con el mismo ID.
Al abrir la página se tiene que presentar ese formulario que pide la imagen. Cuando se pulse el botón enviar se llama a la misma página o a la que tu le pongas. En esa página llamada tienes que almacenar la imagen. Ya está subida en un directorio temporal del servidor, solo tienes que moverla a tu espacio donde tengas el resto de imágenes (la conexión y manejo de la base de datos imagino que sabrás hacerlo, si no es así dímelo que busco cómo se hace con SQL Server):
// Abrir base de datos SQL Server
$ID = $_POST['id'];
$path = "imgs/{$_FILES['img'][name]}"
if(!copy($_FILES['img']['tmp_name'], $path)) {
// Ha habido algun error
} else {
// Insertar $ID y $path en un registro de la base de datos
// Cerrar base de datos
}
Ya tienes la imagen dentro del directorio img. Y tienes en la base de datos la referencia y la localización de esa imagen.
Ahora, cuando quieras mostrar esa imagen, debes saber el identificador o referencia para buscar su localización en la base de datos. Y con eso solo tienes que hacer una consulta a la base de datos y mostrarla:
<html><head> ... </head> <body>
<?
// De alguna forma debes tener el identificador. Lo asignas a la variable $ID
// Abrir base de datos SQL
Server
// Realizar consulta y obtener el path por ejemplo en la variable $path
echo "<img src='$path'>";
?>
</body></html>
Como ves, sin saber SQL Server no te puedo explicar mucho más sobre las bases de datos. En la ayuda de PHP (y en www.php.net) vienen todas las funciones que puedas necesitar.
En resumen: solicitas mediante un formulario la imagen, que se transfiere al servidor. La copias al lugar donde la quieres almacenar. Guardas en la base de datos un registro con la nueva imagen. Y para mostrarla solo tienes que consultar la base de datos.
¿A qué te refieres con desplegarlo a una forma?
En realidad quería agradecerte por tu respuesta, Pero
te explico más.. estoy creando un sitio en Dreamweaver
y necesito guardar las fotos de los artículos
que voy a vender en la base de datos, que por cierto
estoy usando SqlServer 2000 para luego poder desplegarlas
en la página.
¿Creo qué tu hablas de una dirección física o ruta que se guarda
en algún sitio correcto?
Para luego poder accesarla con la misma ruta o path
O sea que lo que estarías guardando es el path de donde
esta la imagen, ¿correcto?
Gracias por tu respuesta..
Si, hablo de una ruta en la que se encuentra localizada la imagen en el disco duro.
El código que te he puesto es para el administrador de tu sitio web. Es decir, para ti, no para los clientes. Los artículos que vas a vender es algo dinámico que cambiará con el tiempo y por tanto tienes que ir introduciendolos y borrándolos de la base de datos a medida que vayas a ofrecer o dejes de ofrecer un artículo.
Entonces, el código es para un formulario que copiaría la imagen desde cualquier ordenador al servidor donde tengas la web disponible al público. Desde tu casa por ejemplo, entras, introduces la imagen en el formulario y ésta se envía al servidor, allí se almacena en una ruta, la dirección física de la que hablas. Y esa ruta la guardas en la base de datos de imágenes, para saber donde se encuentra cada imagen de la que dispones. Y luego para mostrarla coges el código de artículo por ejemplo, que sería el identificador que puse en el formulario, y buscas la ruta que le corresponde. Así obtienes donde se encuentra la imagen.
La imagen será un fichero del disco duro del servidor. Como bien has entendido, lo que almacenas en la base de datos es el path de esa imagen.
No necesitas almacenar un identificador si te aseguras que el nombre de cada imagen sea único. Que por otra parte es obligatorio si almacenas las imágenes en la misma carpeta. Pero para no limitar mejor usar identificador. Imagina que tienes la estructura:
imagenes/
|- Vaqueros/
| |- PantalonAzul.jpg
| |- PantalonVerde.jpg
|
|- Otros/
|- PantalonAzul.jpg
|- PantalonVerde.jpg
No podrías almacenar los cuatro archivos en la misma carpeta porque se duplican los nombres y no es posible. Pero en carpetas distintas (una vaqueros y otra Otros) si. Por eso es mejor usar el identificador en la base de datos.
Espero no haberte liado con esto del identificador, pero quería aclararlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas