Foros del Web » Programando para Internet » PHP »

problema para agregar imagen a base de datos

Estas en el tema de problema para agregar imagen a base de datos en el foro de PHP en Foros del Web. Saludos. Mi problema es que quiero cargar una imagen a mi base de datos pero que todo sea en un solo archivo y una sola ...
  #1 (permalink)  
Antiguo 07/08/2013, 09:01
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta problema para agregar imagen a base de datos

Saludos.
Mi problema es que quiero cargar una imagen a mi base de datos pero que todo sea en un solo archivo y una sola base de datos para al momento de llamar el listado todo sea mas fácil de mostrar con sus respectivos datos y su imagen correspondiente mi código es el siguiente:

Código PHP:
 <form name="registrar" accept-charset="iso-8859-1" action=" " method="POST" onsubmit="return formulario(this)" class="cargabd">
    <div><label>Nombre de Producto:</label><input name="producto" type="text" size="50" ></div>
    <div><label>Marca de Producto:</label><input name="marca" type="text" size="50"></div>
       <div><label>Descripci&oacute;n de Producto:</label><textarea name="descripcion" class="textarea" rows="5" cols="39"></textarea></div>
    <div><label>Precio de Producto:</label><input name="precio" type="text" size="50" onkeydown="return decimales(this, event)"></div>
    <div><label>Cantidad de Productos:</label><input name="cantidad" type="text" size="50"></div>
    <div><label></label><input name="imagen" type="file" class="cargar-imagen"></div>
    <div> <input type="submit" name="guardar" value="Registrar Producto"/></div>    
      </form>
    <?php
    
if(isset($_POST['guardar'])){
        
$producto=$_POST['producto'];
        
$marca=$_POST['marca'];
        
$descripcion=$_POST['descripcion'];
        
$precio=$_POST['precio'];
        
$cantidad=$_POST['cantidad'];
        
$imagen=$_POST['imagen'];
$sql mysql_query("INSERT INTO productos (nombre,marca,descripcion,precio,cantidad,imagen)VALUES('$producto','$marca','$descripcion','$precio','$cantidad','$imagen');");


        if (!
$sql) {
echo 
"Fallo en la insercion de registro en la Base de Datos: " mysql_error();
}else{
    
/*echo"Los datos se agregaron correctamente!!";*/
    
header("location:cargar_productos.php");
    
mysql_free_result(); 
    }
    }


/*con este código cargo mis imágenes*/


if ($_FILES["imagen"]["error"] > 0){
  echo 
"ha ocurrido un error";
} else {
  
//verificar si el tipo de archivo es un tipo de imagen permitido.
  //y que el tamano del archivo no exceda los 100kb
  
$permitidos = array("image/jpg""image/jpeg""image/gif""image/png");
  
$limite_kb 100;
  
  if (
in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb 1024){
    
//esta es la ruta donde copiaremos la imagen
    //recuerden que deben crear un directorio con este mismo nombre
    //en el mismo lugar donde se encuentra el archivo subir.php
    
$ruta "imagenes/" $_FILES['imagen']['name'];
    
//comprobamos si este archivo existe para no volverlo a copiar.
    //pero si quieren pueden obviar esto si no es necesario.
    //o pueden darle otro nombre para que no sobreescriba el actual.
    
if (!file_exists($ruta)){
      
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
      //usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
      //almacenara true o false
      
$resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
      if (
$resultado){
        
$nombre $_FILES['imagen']['name'];
        @
mysql_query("INSERT INTO productos (imagen) VALUES ('$nombre')") ;
        echo 
"El archivo ha sido movido exitosamente.";
        exit();
      } else { 
      echo 
"Ocurrio un error al el archivo.";
        exit();
      }
    } else {
    echo 
"El archivo " .$_FILES['imagen']['name'];  echo "<p>ya existe</p>";
    }
  } else {
   echo
"Archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes."
        exit();
  }
}
?>
Agrego que el código con el que agrego imágenes es otro archivo lo que quiero es agregar este código al primer formulario para que todo sea uno solo.
Espero alguien me pueda ayudar, gracias de ante mano.
  #2 (permalink)  
Antiguo 07/08/2013, 09:06
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: problema para agregar imagen a base de datos

No es recomendable trabajar la imagen en la base de datos, me refiero de agregar el binario a la base de datos. Lo que te recomiendo es que subas la imagen al servidor y luego la dirección en la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/08/2013, 09:15
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema para agregar imagen a base de datos

gracias por tu respuesta como aria eso entonces?
  #4 (permalink)  
Antiguo 07/08/2013, 09:22
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: problema para agregar imagen a base de datos

Como comentario adicional a lo que te recomendo abimaelrc solo guarda el nombre de la imagen en la BD asi sera mas flexible a la hora de hacer cambios.
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #5 (permalink)  
Antiguo 07/08/2013, 10:24
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema para agregar imagen a base de datos

entonces como hago para guardar el nombre de la imagen en la BD y que al llamarla este en en una carpeta y la pueda utilizar correspondiendo a los demás campos de la BD.
  #6 (permalink)  
Antiguo 07/08/2013, 10:41
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: problema para agregar imagen a base de datos

Si usas el buscador de este foro encontraras que este a sido un tema muy tratado solo pon subir imagenes y veras que hay mucha informacion y aportes,si tienes problemas implementando el codigo seria recomendable abrir un nuevo tema con tus dudas y mostrando tus avances ya si la comunidad podra ayudarte.

Saludos.
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #7 (permalink)  
Antiguo 07/08/2013, 10:45
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema para agregar imagen a base de datos

ok gracias.
  #8 (permalink)  
Antiguo 07/08/2013, 10:53
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: problema para agregar imagen a base de datos

En tu código ya tienes el nombre de la imagen el la variable $nombre

Por otra parte, te puedo sugerir otro enfoque, puedes simplemente guardar tu registro en la bd, y teniendo el id de tu registro insertado, crear una carpeta cuyo nombre sería el id, y donde podrías almacenar todas las imágenes que necesites.

Cuando quieras recuperar las imágenes, simplemente buscas la carpeta con el id del registro y lees el contenido de la carpeta, recuperando la o las imágenes.
  #9 (permalink)  
Antiguo 07/08/2013, 11:22
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema para agregar imagen a base de datos

si es lo que me han estado sugiriendo pero la vrd aun no tengo idea de como hacerlo :p
  #10 (permalink)  
Antiguo 07/08/2013, 15:54
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema para agregar imagen a base de datos

ya logre hacer lo que quería, unir todo el código en un solo documento php pero aun no logro hacer que guarde solo el registro de mi imagen en la base de datos alguien me podra ayudar al respecto con mi problema ya que después tengo que llamar la el listado de todos estos campos y mostrarlos en una tabla. mi codigo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. include_once "conexion.php";
  3. include_once ("seguridad.php");        
  4. ?>
  5. <!doctype html>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <title>Agregar::Productos</title>
  10. <link href="style.css" rel="stylesheet" type="text/css">
  11. <script type="text/javascript" src="js/jquery.min.js">
  12. </script>
  13. <script type="text/javascript" src="js/tabs.js">
  14. </script>
  15. <script type="text/jscript" src="js/funciones.js">
  16. </script>
  17. </head>
  18.  
  19. <body>
  20. <div class="cabecera">
  21. <div class="logo"><img src="imagenes/logo.png"></div>
  22. <p class="saludo">Bienvenido: <?php echo $_SESSION['usuario']; ?><br><a href="logout.php" style="float:right;">Cerrar</a></p>
  23.    
  24.    <div id="menu">
  25.         <ul class="tabs">
  26.     <li><a href="#tab1">Cargar Producto</a></li>
  27.     <li><a href="#tab2">Editar Producto</a></li>
  28.     <li><a href="#tab3">Borrar Producto</a></li>
  29.      <li><a href="javascript:window.history.back();">&laquo; Ir al inici&oacute;</a></li>
  30.         </ul>
  31.     </div>
  32.     <div class="tab_container">
  33.        <div id="tab1" class="tab_content">
  34.         <!--registro de datos-->
  35.        
  36.     <form name="registrar" enctype="multipart/form-data" accept-charset="iso-8859-1" action=" " method="POST" onsubmit="return formulario(this)" class="cargabd">
  37.     <div><label>Nombre de Producto:</label><input name="producto" type="text" size="50" ></div>
  38.     <div><label>Marca de Producto:</label><input name="marca" type="text" size="50"></div>
  39.     <div><label>Descripci&oacute;n de Producto:</label><textarea name="descripcion" class="textarea" rows="5" cols="39"></textarea></div>
  40.     <div><label>Precio de Producto:</label><input name="precio" type="text" size="50" onkeydown="return decimales(this, event)"></div>
  41.     <div><label>Cantidad de Productos:</label><input name="cantidad" type="text" size="50"></div>
  42.     <div><label></label><input name="imagen" type="file" class="cargar-imagen"></div>
  43.     <div> <input type="submit" name="guardar" value="Registrar Producto"/></div>    
  44.     </form>
  45.     <?php
  46. if (isset($_POST['guardar'])) {  
  47.     if(is_uploaded_file($_FILES['imagen']['tmp_name'])) {
  48.      
  49.      
  50.       // me verifica haya sido cargado el archivo  
  51.         $ruta_destino = "imagenes-productos/";
  52.         $namefinal= trim ($_FILES['imagen']['name']); //linea nueva devuelve la cadena sin espacios al principio o al final
  53.         $namefinal= ereg_replace (" ", "", $namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
  54.         $uploadfile= $ruta_destino . $namefinal;  
  55.    if(move_uploaded_file($_FILES['imagen']['tmp_name'], $uploadfile)) { // se coloca en su lugar final  
  56.        echo "<b>Carga del Producto exitosa!</b><br>";  
  57.                     /*echo "Nombre: <i><a href=\"".$ruta_destino . $_FILES['imagen']['name']."\">".$_FILES['imagen']['name']."</a></i><br>";  
  58.                     echo "Tipo MIME: <i>".$_FILES['imagen']['type']."</i><br>";  
  59.                     echo "Peso: <i>".$_FILES['imagen']['size']." bytes</i><br>";  
  60.                     echo "<br><hr><br>";  */
  61.        //conectamos a la base de datos para almacenar los datos y la ruta del archivo
  62.            include_once("conexion.php");
  63.                    $producto=$_POST['producto'];
  64.                    $marca=$_POST['marca'];
  65.                    $descripcion=$_POST['descripcion'];
  66.                    $precio=$_POST['precio'];
  67.                    $cantidad=$_POST['cantidad'];
  68.                    $nombre_archivo=$POST['imagen'];
  69.                    $query = "INSERT INTO productos (nombre,marca,descripcion,precio,cantidad,imagen)VALUES('$producto','$marca','$descripcion','$precio','$cantidad','".$_FILES['imagen']         ['size']."')";
  70.        mysql_query($query) or die(mysql_error());
  71.        echo "El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
  72.         }
  73.         else{
  74.             echo"Ocurrió un error al cargar el Producto </br></br> Intente Nuevamente";
  75.         }  
  76.     }  
  77.  }
  78. ?>
  79.       </div>
  80.     <div id="tab2" class="tab_content">
  81.     <!--actualizar datos-->
  82.     </div>
  83.     <div id="tab3" class="tab_content">
  84.        
  85.     </div>
  86.    </div>
  87. </div>
  88. </body>
  89. </html>
  #11 (permalink)  
Antiguo 07/08/2013, 15:55
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Sonrisa Respuesta: problema para agregar imagen a base de datos

Cita:
Iniciado por ghiper Ver Mensaje
ya logre hacer lo que quería, unir todo el código en un solo documento php pero aun no logro hacer que guarde solo el registro de mi imagen en la base de datos alguien me podra ayudar al respecto con mi problema ya que después tengo que llamar la el listado de todos estos campos y mostrarlos en una tabla. mi codigo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. include_once "conexion.php";
  3. include_once ("seguridad.php");        
  4. ?>
  5. <!doctype html>
  6. <html>
  7. <head>
  8. <meta charset="utf-8">
  9. <title>Agregar::Productos</title>
  10. <link href="style.css" rel="stylesheet" type="text/css">
  11. <script type="text/javascript" src="js/jquery.min.js">
  12. </script>
  13. <script type="text/javascript" src="js/tabs.js">
  14. </script>
  15. <script type="text/jscript" src="js/funciones.js">
  16. </script>
  17. </head>
  18.  
  19. <body>
  20. <div class="cabecera">
  21. <div class="logo"><img src="imagenes/logo.png"></div>
  22. <p class="saludo">Bienvenido: <?php echo $_SESSION['usuario']; ?><br><a href="logout.php" style="float:right;">Cerrar</a></p>
  23.    
  24.    <div id="menu">
  25.         <ul class="tabs">
  26.     <li><a href="#tab1">Cargar Producto</a></li>
  27.     <li><a href="#tab2">Editar Producto</a></li>
  28.     <li><a href="#tab3">Borrar Producto</a></li>
  29.      <li><a href="javascript:window.history.back();">&laquo; Ir al inici&oacute;</a></li>
  30.         </ul>
  31.     </div>
  32.     <div class="tab_container">
  33.        <div id="tab1" class="tab_content">
  34.         <!--registro de datos-->
  35.        
  36.     <form name="registrar" enctype="multipart/form-data" accept-charset="iso-8859-1" action=" " method="POST" onsubmit="return formulario(this)" class="cargabd">
  37.     <div><label>Nombre de Producto:</label><input name="producto" type="text" size="50" ></div>
  38.     <div><label>Marca de Producto:</label><input name="marca" type="text" size="50"></div>
  39.     <div><label>Descripci&oacute;n de Producto:</label><textarea name="descripcion" class="textarea" rows="5" cols="39"></textarea></div>
  40.     <div><label>Precio de Producto:</label><input name="precio" type="text" size="50" onkeydown="return decimales(this, event)"></div>
  41.     <div><label>Cantidad de Productos:</label><input name="cantidad" type="text" size="50"></div>
  42.     <div><label></label><input name="imagen" type="file" class="cargar-imagen"></div>
  43.     <div> <input type="submit" name="guardar" value="Registrar Producto"/></div>    
  44.     </form>
  45.     <?php
  46. if (isset($_POST['guardar'])) {  
  47.     if(is_uploaded_file($_FILES['imagen']['tmp_name'])) {
  48.      
  49.      
  50.       // me verifica haya sido cargado el archivo  
  51.         $ruta_destino = "imagenes-productos/";
  52.         $namefinal= trim ($_FILES['imagen']['name']); //linea nueva devuelve la cadena sin espacios al principio o al final
  53.         $namefinal= ereg_replace (" ", "", $namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
  54.         $uploadfile= $ruta_destino . $namefinal;  
  55.    if(move_uploaded_file($_FILES['imagen']['tmp_name'], $uploadfile)) { // se coloca en su lugar final  
  56.        echo "<b>Carga del Producto exitosa!</b><br>";  
  57.                     /*echo "Nombre: <i><a href=\"".$ruta_destino . $_FILES['imagen']['name']."\">".$_FILES['imagen']['name']."</a></i><br>";  
  58.                     echo "Tipo MIME: <i>".$_FILES['imagen']['type']."</i><br>";  
  59.                     echo "Peso: <i>".$_FILES['imagen']['size']." bytes</i><br>";  
  60.                     echo "<br><hr><br>";  */
  61.        //conectamos a la base de datos para almacenar los datos y la ruta del archivo
  62.            include_once("conexion.php");
  63.                    $producto=$_POST['producto'];
  64.                    $marca=$_POST['marca'];
  65.                    $descripcion=$_POST['descripcion'];
  66.                    $precio=$_POST['precio'];
  67.                    $cantidad=$_POST['cantidad'];
  68.                    $nombre_archivo=$POST['imagen'];
  69.                    $query = "INSERT INTO productos (nombre,marca,descripcion,precio,cantidad,imagen)VALUES('$producto','$marca','$descripcion','$precio','$cantidad','".$_FILES['imagen']         ['size']."')";
  70.        mysql_query($query) or die(mysql_error());
  71.        echo "El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
  72.         }
  73.         else{
  74.             echo"Ocurrió un error al cargar el Producto </br></br> Intente Nuevamente";
  75.         }  
  76.     }  
  77.  }
  78. ?>
  79.       </div>
  80.     <div id="tab2" class="tab_content">
  81.     <!--actualizar datos-->
  82.     </div>
  83.     <div id="tab3" class="tab_content">
  84.        
  85.     </div>
  86.    </div>
  87. </div>
  88. </body>
  89. </html>
tambien agrego que quiero poner el cargar la imagen de manera opcional, que si el usuario no cargo la imagen aparesca una por defaul al imprimir la tabla

Etiquetas: formulario, mysql, registro, sql, variable
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 14:46.