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

5 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

 
Powered by Blogger