martes, 1 de abril de 2014

Tutorial PHP : Subir imagen y guardar direccion de base de datos


En esta ocasión vamos a explicar de manera sencilla como subir una imagen a nuestro servidor y guardar la url de la misma en nuestra base de datos.

Un caso de uso puede ser, cuando tienes una tabla de productos y quieres tener una imagen por cada producto.





Supongamos que tenemos una tabla como la siguiente :


Construimos nuestro formulario

<form method="post" enctype="multipart/form-data" action="subir_imagen.php">
 Codigo: <input id="txt_codigo" type="text" name="codigo"><br />
 Descripcion: <input id="txt_descripcion" type="text" name="descripcion"><br />
 <input id="file_url" type="file" name="foto"><br />
  <input type="submit" value="Guardar">
</form>

Se verá asi


Ahora construimos nuestro codigo en PHP



Explicando un poco el código, lo que hace php es toma los valores de la variable $_FILE que es la que contiene los datos del archivo, para mas informacion en la página de PHP.Net

Primero validamos si el directorio destino tiene permisos de escritura, de ser asi, validamos que el archivo haya sido correctamente cargado a la ubicación temporal.

Luego lo movemos al directorio destino con move_uploaded_file(imagen_temporal, imagen_destino)

Comprobamos que haya sido correcto y grabamos en nuestra base de datos.

Para los que recién inician con PHP y Mysql les explico, primero abrimos la conexión $link = mysql_connect('localhost', $mi_usuario, $mi_password), seleccionamos nuestra base de datos a usar mysql_select_db.

Creamos nuestra sentencia a ejecutar y la ejecutamos con mysql_query

Si probamos tendríamos algo similar a esto:



Llenamos el formulario


Presionamos Guardar



Y nos da como resultado en la web




En nuestra base de datos se guardo el registro




El código fuente lo pueden obtener de mi repositorio Github

12 comentarios:

  1. genio!!!. me ayudó muchísimo. mil gracias eh!

    ResponderEliminar
  2. disculpa tengo una duda que se tiene que modificar aqui? $imagen_subida = $dir_destino . basename($_FILES['foto']['name']);

    ResponderEliminar
    Respuestas
    1. No tenes que reemplazar nada,
      $_FILES['imagen']['name']; //este es el nombre del archivo que acabas de subir
      $_FILES['imagen']['type']; //este es el tipo de archivo que acabas de subir
      $_FILES['imagen']['tmp_name'];//este es donde esta almacenado el archivo que acabas de subir.
      $_FILES['imagen']['size']; //este es el tamaño en bytes que tiene el archivo que acabas de subir.
      $_FILES['imagen']['error']; //este almacena el codigo de error que resultaría en la subida.
      //imagen es el nombre del input tipo file del formulario.

      Eliminar
  3. ¿Y si lo que quiero es que me inserte una imagen desde una url externa?

    ResponderEliminar
  4. Como podria hacer para guardarlo en una base de datos en postgresql,como seria el query??

    ResponderEliminar
  5. Quisiera que me muestre la consulta en otra página, como sería

    ResponderEliminar
  6. quisiera que me muestre la consulta en otra página, es decir ver lo que se grabó en la bd, en otra página.
    Gracias

    ResponderEliminar
  7. Y si por ejemplo quiero insertar dos imagenes? Como hariamos con la url que va a quedar algo asi en base de datos: descarga.jpgimagen.jpg. Si lo quiero mostrar en el navegador.

    ResponderEliminar
  8. tengo en mi tabla un campo llamado figura, quiero que este se almacene la Url de la imagen que eligieron y que despues me la muestre, pero quiero ponerle imagen1 despues si sube otra imagen2 etc, Alguien Ayuda!

    ResponderEliminar
  9. Lo del Form en que archivo va?? en un html o en js???

    ResponderEliminar
  10. en la parte de archivo_usuario que va, que no seria foto??

    ResponderEliminar

 
Powered by Blogger