Foros del Web » Programando para Internet » PHP »

Subir imagen y almacenar ruta en MySQL

Estas en el tema de Subir imagen y almacenar ruta en MySQL en el foro de PHP en Foros del Web. Hola Estoy intentando subir un formulario con una imagen con PHP. La imagen iría a una carpeta llamada "imagenes" y los datos, junto con el ...
  #1 (permalink)  
Antiguo 01/11/2011, 11:26
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Subir imagen y almacenar ruta en MySQL

Hola

Estoy intentando subir un formulario con una imagen con PHP.
La imagen iría a una carpeta llamada "imagenes" y los datos, junto con el nombre de la imagen iría a MySQL.

No tengo mucha idea de esto y he visto algunos scripts pero no acaban de funcionarme.

El código que tengo es:

Código:
      //Variable para saber si se produce algun error
       $error=0;
    
        // Guarda las caracteristicas de la imagen
        //nombre_archivo=al directorio y al nombre que quieres que se guarde la foto
        $nombre_archivo = "..imagenes/".$_FILES['imagen']['name']; 
        //tipo_archivo= a la extension del archivo en nuestro caso solo aceptamos imagenes (jpg, gif y png)
        $tipo_archivo = $_FILES['imagen']['type'];
        // tamano_archivo= Almacena el tamaño del archivo en bytes
        $tamano_archivo = $_FILES['imagen']['size']; 
        //compruebo si las características del archivo son las que deseo 
        if($nombre_archivo!='../imagenes'){
        if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpg")) && ($tamano_archivo < 2000000))) { 
          //el tamaño o la extension del archivo no son correctas se pone error=1
          $error=1;

                         
        }else{ 
        if (move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre_archivo)){
         // El archivo ha sido cargado con éxito     
           
        
        }else{ 
        //No se ha podido guardar el archivo en el servidor error=2
        $error=2;               
         } 
       }
       }
           // Comprueba si tiene algun error
               if ($error==1){
            echo "<script> alert (\"El archivo no debe tener un tamaño superior a 2 MB y deber ser JPG o GIF\"); </script>";
            echo "<script language=Javascript> location.href=\"index.php\"; </script>";
            die(); }
            elseif ($error==2){
            echo "<script> alert (\"No se ha podido guardar la imagen en el SERVIDOR \"); </script>";
            echo "<script language=Javascript> location.href=\"index.php\"; </script>";
            die(); 
            }
            //si no hay errores se inserta en la TABLA
            else{
			

 
  $insertSQL = sprintf("INSERT INTO libros (libro_id, nombre_libro, descripcion, precio, imagen) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['libro_id'], "text"),
                       GetSQLValueString($_POST['nombre_libro'], "text"),
                       GetSQLValueString($_POST['descripcion'], "text"),
                       //GetSQLValueString($_POST['Cantidad'], "int"),
					   GetSQLValueString($_POST['precio'], "double"),
					   GetSQLValueString($nombre_archivo, "text")
					   );

  mysql_select_db($database_conexion_libros, $conexion_libros);
  $Result1 = mysql_query($insertSQL, $conexion_libros) or die(mysql_error());

  $insertGoTo = "ingreso_exitoso.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
  #2 (permalink)  
Antiguo 01/11/2011, 11:48
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 19
Respuesta: Subir imagen y almacenar ruta en MySQL

fijate que tu form tenga este atributo

enctype="multipart/form-data"

Saludos
  #3 (permalink)  
Antiguo 01/11/2011, 12:35
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Subir imagen y almacenar ruta en MySQL

Los datos a la base de datos me los sube! Lo que no me sube es la imagen ni introduce su nombre en la base de datos
  #4 (permalink)  
Antiguo 01/11/2011, 12:42
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 2 meses
Puntos: 7
Respuesta: Subir imagen y almacenar ruta en MySQL

Hola:

Prueba ir haciendo var_dump($nombre_archivo); donde $nombre_archivo es la variable que quieres testear para ver que datos te llega e ir controlando que tengas realmente el dato que quieres, hasta asi poder encontrar el error.

Te sugiero primero que trates de lograr incorporar el nombre a la base de datos que es mas simple, luego soluciona el problema de la subida de la imagen al server.

Sería bueno tambien que coloques aqui que error te arroja para ver por donde podemos ayudarte.

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #5 (permalink)  
Antiguo 01/11/2011, 12:46
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Subir imagen y almacenar ruta en MySQL

Cita:
Iniciado por armandoweb Ver Mensaje
Hola:

Prueba ir haciendo var_dump($nombre_archivo); donde $nombre_archivo es la variable que quieres testear para ver que datos te llega e ir controlando que tengas realmente el dato que quieres, hasta asi poder encontrar el error.

Te sugiero primero que trates de lograr incorporar el nombre a la base de datos que es mas simple, luego soluciona el problema de la subida de la imagen al server.

Sería bueno tambien que coloques aqui que error te arroja para ver por donde podemos ayudarte.

Saludos.

No da ningún error pero no sube la imagen e introduce en el campo imagen como NULL
  #6 (permalink)  
Antiguo 01/11/2011, 12:48
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 2 meses
Puntos: 7
Respuesta: Subir imagen y almacenar ruta en MySQL

Prueba entonces con var_dump()

Esta funcion te mostrara que tipo de dato llega en una variable y el valor, entonces puedes detectar un posible error, hazlo paso por paso.

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #7 (permalink)  
Antiguo 01/11/2011, 12:58
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Subir imagen y almacenar ruta en MySQL

Perdona con el código de arriba pone en el campo de la base de datos "../imagenes/" en lugar de NULL
  #8 (permalink)  
Antiguo 01/11/2011, 12:59
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Subir imagen y almacenar ruta en MySQL

Cita:
Iniciado por armandoweb Ver Mensaje
Prueba entonces con var_dump()

Esta funcion te mostrara que tipo de dato llega en una variable y el valor, entonces puedes detectar un posible error, hazlo paso por paso.

Saludos.
Perdona... como se usa esa función? es que no controlo PHP
  #9 (permalink)  
Antiguo 01/11/2011, 13:33
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 2 meses
Puntos: 7
Respuesta: Subir imagen y almacenar ruta en MySQL

Tienes que hacer por ejemplo:

Código PHP:
Ver original
  1. var_dump($nombre_archivo);

Entonces por pantalla te saldra el tipo de dato y el valor de la variable $nombre_archivo, por ejemplo. De esta forma puedes controlar que el dato que tienes en $nombre_archivo es el que esperas tener.

De esta forma vas haciendo los mismo con las demas variables que intervienen en el almacenamiento de los datos en la base y en la subida al servidor, para ver donde esta el error.

Aqui esta la documentacion oficial de la funcion:

http://php.net/manual/es/function.var-dump.php

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #10 (permalink)  
Antiguo 01/11/2011, 14:17
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Subir imagen y almacenar ruta en MySQL

string(10) "../imagen/"

ese es el valor de nombre_archivo
y eso es lo que me introduce en la base de datos
  #11 (permalink)  
Antiguo 01/11/2011, 15:20
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 2 meses
Puntos: 7
Respuesta: Subir imagen y almacenar ruta en MySQL

Ok, ahi ya tienes un error, porque según tu codigo:

Código PHP:
Ver original
  1. $nombre_archivo = "..imagenes/".$_FILES['imagen']['name'];

deberías tener la ruta y el nombre de la imagen...sigue asi con las demás variables para ir corrigiendo los valores que deberían llegar.

Por otro lado te recomiendo que almacenes solo el nombre de la imagen en la base de datos, porque si por cualquier motivo tienes que modificar el nombre de la carpeta que almacena las imágenes no tienes que modificar todos los campos en la base de datos.

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #12 (permalink)  
Antiguo 01/11/2011, 15:31
 
Fecha de Ingreso: julio-2006
Mensajes: 57
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Subir imagen y almacenar ruta en MySQL

Cita:
Iniciado por armandoweb Ver Mensaje
Ok, ahi ya tienes un error, porque según tu codigo:

Código PHP:
Ver original
  1. $nombre_archivo = "..imagenes/".$_FILES['imagen']['name'];

deberías tener la ruta y el nombre de la imagen...sigue asi con las demás variables para ir corrigiendo los valores que deberían llegar.

Por otro lado te recomiendo que almacenes solo el nombre de la imagen en la base de datos, porque si por cualquier motivo tienes que modificar el nombre de la carpeta que almacena las imágenes no tienes que modificar todos los campos en la base de datos.

Saludos.

Perdona nuevamente. No entiendo lo que me quieres decir.
En $nombre_archivo debería insertar "../imagenes/" y el nombre de la foto pero no me escribe nada!!
Cual es el error?

Perdona por la paliza que te estoy dando!!
  #13 (permalink)  
Antiguo 01/11/2011, 16:24
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 2 meses
Puntos: 7
Respuesta: Subir imagen y almacenar ruta en MySQL

A ver...

Si no manejas Php o no tienes los minimos conocimientos, puedo intentar explicarte hasta el hartazgo y no comprenderas lo que digo, por lo que creo conveniente que comiences con aprender Php desde el inicio, porque nadie hará el trabajo por ti, solo te orientarán en las distintos problemas que se te puedan presentar.

En respuesta a tu pregunta, si tienes $nombre_archivo y el mismo está compuesto por "..imagenes/" y $_FILES['imagen']['name'] (nombre de la imagen que llega desde el form) y no te está mostrando el nombre de la imagen. El campo file del form se llama "imagen"?? El form tiene enctype="multipart/form-data"??

Para decirte en donde está el error deberíamos conocer todo el código que interviene en el script, por ejemplo el codigo del form. Por eso solo podemos orientarte, para que vos por tus propios medios, llegues a la solucion.

Espero haberte ayudado.

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]

Etiquetas: almacenar, formulario, imagenes, mysql, ruta, sql, tabla, variables
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 02:59.