Foros del Web » Programando para Internet » PHP »

Como insertar imagenes con formulario a una base de datos

Estas en el tema de Como insertar imagenes con formulario a una base de datos en el foro de PHP en Foros del Web. Hola buenas alguien de por aqui me puede explicar o me puede desir de un buen tutorial de como se debe hacer para insertar unas ...
  #1 (permalink)  
Antiguo 26/10/2011, 00:53
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Como insertar imagenes con formulario a una base de datos

Hola buenas alguien de por aqui me puede explicar o me puede desir de un buen tutorial de como se debe hacer para insertar unas imagenes a una base de datos mediante un formulario. Seria para insertar esto exactamente: Nombre, caracteristica,precio y imagen.

un saludo.
  #2 (permalink)  
Antiguo 26/10/2011, 03:32
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Como insertar imagenes con formulario a una base de datos

Hola.

Lo mas común sería guardar los campos nombre, caracteristica y precio en la base de datos, y la imagen en una carpeta del servidor.

Tendrías que buscar el código para subir fotografías al servidor, en la red hay la ciento y la madre sobre este tema.

Cualquier duda... ya sabes

Saludos
  #3 (permalink)  
Antiguo 26/10/2011, 05:53
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

Hola buenas gogupe!

EL codigo que tengo para esto es este:
Código PHP:
Ver original
  1. <?php
  2. $status = "";
  3. if ($_POST) {
  4.     // obtenemos los datos del archivo
  5.     $nombre = $_FILES["img"]['name'];
  6.     $tmpName = $_FILES['img']['tmp_name'];
  7.     $prefijo = substr(md5(uniqid(rand())),0,6);
  8.    
  9.     $name = $_POST['name'];
  10.     $description =  $_POST['description'];
  11.     $price = $_POST['price'];
  12.    
  13.     if ($nombre != "") {
  14.         // indicamos el nombre definitivo de la imagen
  15.         $nombre_final = $prefijo."_".$nombre;
  16.         // indicamos el lugar donde guardar el archivo
  17.         $destino =  "img/products/".$nombre_final;
  18.         // ejecutamos la función dentro de un condicional e imprimimos el mensaje que corresponda
  19.         if (copy($_FILES['img']['tmp_name'],$destino)) {
  20.        
  21.                 // me conecto    
  22.                 $link = mysql_connect("localhost", "xxxxxxx", "xxxxxx");
  23.                 mysql_select_db("tienda",$link);
  24.                 if($link) {
  25.                     //echo "Connection completed successfully.";
  26.                
  27.                 } else {  
  28.                
  29.                     echo "error occurred when connecting to the database.";  
  30.                 die();
  31.                
  32.                 }
  33.  
  34.                 // inserto los datos acumulados en las variables en la base de datos
  35.                 $query = "INSERT INTO interne_shop (name, description, price) ".
  36.                          "VALUES ('$name', '$description', '$price')";
  37.  
  38.                     mysql_query($query) or die('Error, no se estableció la conexión, el archivo no se ha subido');                    
  39.        
  40.                 $subido=1;
  41.        
  42.        
  43.        
  44.             $status = "Archivo subido: <b>".$nombre_final."</b>";
  45.         } else {
  46.             $status = "Error al subir el archivo";
  47.         }
  48.     } else {
  49.         $status = "Error al subir archivo";
  50.     }
  51.            
  52. }
  53. ?>

el codigo me funciona perfectamente en el sentido de que se me guarda la imagen en la carpeta de img/products pero el problema lo tengo con el insert a la base de datos.

Un saludo
  #4 (permalink)  
Antiguo 26/10/2011, 06:47
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Como insertar imagenes con formulario a una base de datos

haz esto: "echo $query" justo antes del mysql_query y postealo... a ver si no recoge bien las variables.

Saludos.
  #5 (permalink)  
Antiguo 26/10/2011, 06:52
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 8 meses
Puntos: 89
Respuesta: Como insertar imagenes con formulario a una base de datos

Cita:
Iniciado por gogupe Ver Mensaje
haz esto: "echo $query" justo antes del mysql_query y postealo... a ver si no recoge bien las variables.

Saludos.
Me parece que su problema es que no sabe cómo insertar la url en la base de datos mediante un query, ya que si no me equivoco el query no tiene ninguna referencia hacia la ruta del archivo.
  #6 (permalink)  
Antiguo 26/10/2011, 07:08
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: Como insertar imagenes con formulario a una base de datos

por lo que se aprecia en el script no hay campo en la bbdd para la url de la imagen .. como bien te indican busca info sobre como subir img al servidor en las faq hay algo la respecto
  #7 (permalink)  
Antiguo 26/10/2011, 07:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 115
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

la base de datos
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `formulario` (
  2.   `id_rubro` int(11) NOT NULL AUTO_INCREMENT,
  3.   `Imagen` varchar(255) NOT NULL,
  4.   PRIMARY KEY (`id_rubro`)

yo tengo este formulario.php

Código PHP:
Ver original
  1. [COLOR="Red"]<?php require_once('Connections/localhost.php'); ?>
  2. <?php[/COLOR][COLOR="Blue"]esta parte la modificas con los datos de tu coneccion[/COLOR]
  3. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  4. {
  5.   $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
  6.  
  7.   switch ($theType) {
  8.     case "text":
  9.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  10.       break;    
  11.     case "long":
  12.     case "int":
  13.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  14.       break;
  15.     case "double":
  16.       $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
  17.       break;
  18.     case "date":
  19.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  20.       break;
  21.     case "defined":
  22.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  23.       break;
  24.   }
  25.   return $theValue;
  26. }
  27.  
  28. $editFormAction = $_SERVER['PHP_SELF'];
  29. if (isset($_SERVER['QUERY_STRING'])) {
  30.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  31. }
  32.  
  33. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  34.     [COLOR="Red"]//Guardar imagen
  35.     if(is_uploaded_file($_FILES['Imagen']['tmp_name'])) { // verifica haya sido cargado el archivo
  36.     $ruta= "imagenes/".$_FILES['Imagen']['name'];
  37.     move_uploaded_file($_FILES['Imagen']['tmp_name'], $ruta);
  38.     }[/COLOR] [COLOR="Blue"]como vez esta parte es la que tienes que modificar con el nombre de tu carpeta y el nombre del formulario[/COLOR]
  39.   $insertSQL = sprintf("INSERT INTO formulario (Imagen) VALUES (%s)",
  40.                        GetSQLValueString($ruta, "text"));
  41.  
  42.   mysql_select_db($database_localhost, $localhost);
  43.   $Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
  44.  
  45.   $insertGoTo = "ingreso_exisoto.php";
  46.   if (isset($_SERVER['QUERY_STRING'])) {
  47.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  48.     $insertGoTo .= $_SERVER['QUERY_STRING'];
  49.   }
  50.   header(sprintf("Location: %s", $insertGoTo));
  51. }
  52. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  53. <html xmlns="http://www.w3.org/1999/xhtml">
  54. <head>
  55. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  56. <title>Documento sin t&iacute;tulo</title>
  57. <style type="text/css">
  58. <!--
  59. #Layer1 {
  60.     position:absolute;
  61.     left:137px;
  62.     top:85px;
  63.     width:500px;
  64.     height:500px;
  65.     z-index:1;
  66. }
  67. -->
  68. </style>
  69. </head>
  70.  
  71. <body>
  72. <div id="Layer1">
  73.   <form id="form1" name="form1" enctype="multipart/form-data" method="POST" action="<?php echo $editFormAction; ?>">
  74.     <label for="file"></label>
  75.     <p>
  76.       <input type="file" name="Imagen" id="Imagen" />
  77.       <label></label>
  78.     </p>
  79.     <label for="Submit"></label>
  80.     <input type="submit" name="Submit" value="Enviar" id="Submit" />
  81.     <input type="hidden" name="MM_insert" value="form1">
  82.   </form>
  83. </div>
  84. </body>
  85. </html>

y este es el ingreso_exitoso.php

Código PHP:
Ver original
  1. <?php require_once('Connections/localhost.php'); ?>
  2. <?php
  3. $maxRows_Recordset1 = 5;
  4. $pageNum_Recordset1 = 0;
  5. if (isset($_GET['pageNum_Recordset1'])) {
  6.   $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
  7. }
  8. $startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
  9.  
  10. mysql_select_db($database_localhost, $localhost);
  11. $query_Recordset1 = "SELECT * FROM formulario";
  12. $query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
  13. $Recordset1 = mysql_query($query_limit_Recordset1, $localhost) or die(mysql_error());
  14. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  15.  
  16. if (isset($_GET['totalRows_Recordset1'])) {
  17.   $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
  18. } else {
  19.   $all_Recordset1 = mysql_query($query_Recordset1);
  20.   $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
  21. }
  22. $totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
  23. ?>
  24. <table border="0" cellpadding="0">
  25.   <?php do { ?>
  26.     <tr>
  27.       <td>&nbsp;</td>
  28.       <td><a href="<?php echo $row_Recordset1['Imagen']; ?>"><img src="<?php echo $row_Recordset1['Imagen']; ?>" alt="" width="50" height="50" border="0" lowsrc="imagenes/168483_491704137718_788302718_5827885_3549642_n.jpg"></a></td>
  29.     </tr>
  30.     <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
  31. </table>
  32. <?php
  33. mysql_free_result($Recordset1);
  34. ?>


espero que te sea util yo lo utilizo ien mi sitio que estoy haciendo y funciona de maravillas. cualquier consulta o duda a la orden

este script es con dreamweaver!!
  #8 (permalink)  
Antiguo 26/10/2011, 10:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

mmm vale esto del query!!! como se inserta la url.. en la db?

donde puedo ver un tutorial para esto ?

Pido disculpa por mi ignorancia en el tema, pero es que soy nuevo con esto del php y db!

Un saludo
  #9 (permalink)  
Antiguo 26/10/2011, 10:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

se debe hacer?

Código PHP:
Ver original
  1. $query = "INSERT INTO interne_shop (name, description, price) ".
  2.  "VALUES ('$name', '$description', '$price')";

probe con esto pero me daba error
Código PHP:
Ver original
  1. $query = "INSERT INTO interne_shop (name, description, price,img) ".
  2.  "VALUES ('$name', '$description', '$price','$img')";

y tambien me pasa que solo se me guarda la imagen en carpeta del archivo y solo se me inserta el nombre de la imagen en la base de datos pero el precio y los demas campos no se me insertan.
  #10 (permalink)  
Antiguo 26/10/2011, 15:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

Muchas gracias chicos..... ya lo he logrado!!!!

de que se me inserte las imagenes en la db y de que se pueden ver en el cataloga de la tienda.

pero ahora lo que no entiendo es porque me sale un marco con un borde blanco en las imagenes , si las imagenes las tengo guardadas en png.

Un saludo a todos.
  #11 (permalink)  
Antiguo 26/10/2011, 18:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 115
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

ingresa a este sitio tiene un buen tutorial de como hacerlo


[URL="http://juaniquillo.com/blog/2010/10/subir-imagenes-usando-dreamweaver-php-y-mysql-segunda-parte/"]http://juaniquillo.com/blog/2010/10/subir-imagenes-usando-dreamweaver-php-y-mysql-segunda-parte/[/URL]
  #12 (permalink)  
Antiguo 27/10/2011, 03:20
 
Fecha de Ingreso: octubre-2011
Mensajes: 25
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Como insertar imagenes con formulario a una base de datos

Muchas gracias ofertasdiarias por el link de este tutorial!!! esta genial.. ya tengo mi base de datos trabajando al 100 X 100. Todo me funciona como yo quería


Y muchas gracias a los demás por su respuestas que también me sirvieron de ayuda para orientarme mas en cuanto al manejo de db!!!

Un saludo a todos.

Etiquetas: formulario, imagenes
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 19:47.