Foros del Web » Programando para Internet » PHP »

Subir imagenes y datos a base de datos

Estas en el tema de Subir imagenes y datos a base de datos en el foro de PHP en Foros del Web. Hola! Tengo un problema intentando generar un script para subir una foto y los datos de esa foto (nombre, descripción y fecha) a una base ...
  #1 (permalink)  
Antiguo 03/06/2011, 04:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Subir imagenes y datos a base de datos

Hola!
Tengo un problema intentando generar un script para subir una foto y los datos de esa foto (nombre, descripción y fecha) a una base de datos. Les estaría muy agradecido si me pudieran ayudar a conseguir lo siguiente:
-la ruta de la imagen debe guardarse en un campo de la tabla y el archivo físicamente en una carpeta del servidor

Los datos de la base son estos:
nombre bd: fotos
usuario: adm
contraseña: pass
nombre de la tabla de la bd: fotografias
campos de la tabla (id,nombre,descripcion,imagen,fecha)
nombre de la carpeta del servidor: upload

Manejé este código, pero aunque se conecta a la base de datos no inserta ningún dato:

<?php
if(isset($submit)){
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
//revisar que sea jpg
if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
//nuevo nombre para la imagen
$nuevoNombre = time().".jpg";
//mover la imagen
move_uploaded_file($_FILES['imagen']['tmp_name'], "upload/$nuevoNombre");
//obtener la inforamción
$data = GetImageSize("upload/$nuevoNombre");
/*Inserto el nombre dentro de la Base de datos*/
/*=======================================*/
mysql_connect('localhost','admin','pass') or die('<b>Error conectando al servidor MySQL:</b><br />'.mysql_error());
mysql_select_db('fotos') or die('<b>Error seleccionando la base de datos:</b><br />'.mysql_error());
mysql_query("INSERT INTO fotografias (nombre, descripcion, imagen, fecha) values ('$nombre', '$descripcion', '$fecha', 'upload/$nuevoNombre')");
/*===============================================*/
//mensaje de éxito
echo "<img src='upload/$nuevoNombre' $data[3]> <br> imagen $nuevoNombre subida con éxito";
}else{
echo "Formato no válido para fichero de imagen";
}
} else {
echo "Error al cargar imagen: " . $_FILES['imagen']['name'];
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form_insertar_jpg" id="form_insertar_jpg">

<p class="Estilo1">Nombre
<label>
<input type="text" name="nombre" value="" size="32" />
</label>
</p>

<p class="Estilo1">Descripcion
<label>
<input type="text" name="descripcion" value="" size="32" />
</label>
</p>

<p class="Estilo1">Fecha
<label>
<input type="text" name="fecha" value="" size="32" />
</label>
</p>
<span class="Estilo1">Buscar imagen</span>
<input name="imagen" type="file" size="35" />
</p>

<p>
<input type="submit" name='submit' value="Subir">
</form>



Muchas gracias desde ya!
  #2 (permalink)  
Antiguo 03/06/2011, 05:15
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Subir imagenes y datos a base de datos

Pon el código entre las etiquetas [ php] y [/ php] e identado, q sino no es muy comodo leerlo :)
  #3 (permalink)  
Antiguo 03/06/2011, 05:38
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Subir imagenes y datos a base de datos

Seria asi?

Código PHP:
Ver original
  1. <?php
  2. if(isset($submit)){
  3. if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
  4. //revisar que sea jpg
  5. if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
  6. //nuevo nombre para la imagen
  7. $nuevoNombre = time().".jpg";
  8. //mover la imagen
  9. move_uploaded_file($_FILES['imagen']['tmp_name'], "upload/$nuevoNombre");
  10. //obtener la inforamción
  11. $data = GetImageSize("upload/$nuevoNombre");
  12. /*Inserto el nombre dentro de la Base de datos*/
  13. /*=======================================*/
  14. mysql_connect('localhost','admin','pass') or die('<b>Error conectando al servidor MySQL:</b><br />'.mysql_error());
  15. mysql_select_db('fotos') or die('<b>Error seleccionando la base de datos:</b><br />'.mysql_error());
  16. mysql_query("INSERT INTO fotografias (nombre, descripcion, imagen, fecha) values ('$nombre', '$descripcion', '$fecha', 'upload/$nuevoNombre')");
  17. /*===============================================*/
  18. //mensaje de éxito
  19. echo "<img src='upload/$nuevoNombre' $data[3]> <br> imagen $nuevoNombre subida con éxito";
  20. }else{
  21. echo "Formato no válido para fichero de imagen";
  22. }
  23. } else {
  24. echo "Error al cargar imagen: " . $_FILES['imagen']['name'];
  25. }
  26. }
  27. </php>
  28. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form_insertar_jpg" id="form_insertar_jpg">
  29.  
  30. <p class="Estilo1">Nombre
  31. <label>
  32. <input type="text" name="nombre" value="" size="32" />
  33. </label>
  34. </p>
  35.  
  36. <p class="Estilo1">Descripcion
  37. <label>
  38. <input type="text" name="descripcion" value="" size="32" />
  39. </label>
  40. </p>
  41.  
  42. <p class="Estilo1">Fecha
  43. <label>
  44. <input type="text" name="fecha" value="" size="32" />
  45. </label>
  46. </p>
  47. <span class="Estilo1">Buscar imagen</span>
  48. <input name="imagen" type="file" size="35" />
  49. </p>
  50.  
  51. <p>
  52. <input type="submit" name='submit' value="Subir">
  53. </form>
  #4 (permalink)  
Antiguo 03/06/2011, 05:58
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Subir imagenes y datos a base de datos

1.- ¿La imagen, la guarda en el servidor?
2.- En la consulta SQLm pon algo así:
Código PHP:
mysql_query("INSERT INTO fotografias (nombre, descripcion, imagen, fecha) values ('$nombre', '$descripcion', '$fecha', 'upload/$nuevoNombre')") or die("Error SQL: ".mysql_error()); 
3.- $nombre, $descripcion, $fecha, ¿dónde los obtienes? ¿que valor tienen? ;)
4.- identar = tabular (tener organizado el código!)
  #5 (permalink)  
Antiguo 03/06/2011, 06:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Subir imagenes y datos a base de datos

He hecho lo que os dejo aquí y parece que funciona. Igual se puede hacer mejor... En todo caso lo dejo para quien pueda necesitar algo parecido.
Se trata de subir una imagen (la ruta a la base de datos y el archivo archivo jpg a una carpeta), así como los valores de los campos categoría, título, descripción y fecha a esa base de datos
Comentar que el campo categoria incluye varias opciones a escojer, cuyos valores serán los que se pondrán en la tabla correspondiente en la base de datos

User de la Base de datos: userdatabase
pass: password
nombre base de datos: namedatabase
tabla de la base de datos: tabla
campos de la tabla: (id,imagen,descripcion,titulo,fecha,categoria)
las imagenes se guardan en la carpeta llamada imagenes

1º se monta el formulario en el archivo formulario.html que va a buscar el archivo procesar.php:
Código HTML:
Ver original
  1. <title>formulario.html</title>
  2. </head>
  3. <form action="procesar.php" enctype="multipart/form-data" method="post">
  4.     <label for="imagen"><span class="Estilo1">Imatge:</span></label>
  5.     <span class="Estilo1">
  6.     <input id="imagen" name="imagen" size="30" type="file" />
  7.  
  8.     <br />
  9.     <br />
  10.     Categoria: <select id="categoria" name="categoria" style="width: 126px; height: 33px">
  11.     <option value="botiga">botiga</option>
  12.     <option value="noticies">noticies</option>
  13.     <option value="carns">carns</option>
  14.     <option value="altres">altres</option>
  15.     <option value="catering">catering</option>
  16.     <option value="cuinats">cuinats</option>
  17.     </select><br />
  18.     <br />
  19.     Titol:
  20.     <input id="titulo" name="titulo" type="text" style="width: 205px" /><br />
  21.     <br />
  22.     Descripcio:
  23.     <textarea id="descripcion" name="descripcion" style="width: 264px; height: 150px"></textarea><br />
  24.     <br />
  25.     Data: <input id="fecha" name="fecha" style="width: 173px" type="text" /><br />
  26.     <br />
  27.  
  28.     <input name="submit" type="submit" value="Guardar" />
  29.     <br />
  30.     </span>
  31. </form>
  32. </body>
  33. </html>

2º se crea el archivo procesar.php:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     // Datos de conexión a configurar
  4.     $user = "userdatabase";
  5.     $pass = "pass";
  6.     $bbdd = "namedatabase";
  7.  
  8.     // Ruta donde se guardarán las imágenes
  9.     $directorio = $_SERVER['DOCUMENT_ROOT'].'/imagenes/';
  10.  
  11.     // Conecto a la BBDD
  12.     $dbh = mysql_connect("localhost", $user, $pass);
  13.     $db = mysql_select_db($bbdd);
  14.  
  15.     // Recibo los datos de la imagen y del formulario anteriormente montado
  16.     $nombre = $_FILES['imagen']['name'];
  17.     $tipo = $_FILES['imagen']['type'];
  18.     $tamano = $_FILES['imagen']['size'];
  19.     $titulo = $_POST['titulo'];
  20.     $descripcion = $_POST['descripcion'];
  21.     $fecha = $_POST['fecha'];
  22.     $categoria = $_POST['categoria'];
  23.  
  24.     // Muevo la imagen desde su ubicación
  25.     // temporal al directorio definitivo
  26.     move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$nombre);
  27.  
  28.      // Guardamos en la BBDD todos los datos
  29.     $sql = "INSERT into tabla (imagen,descripcion,titulo,fecha,categoria) values ('/imagenes/$nombre','$descripcion','$titulo','$fecha','$categoria')";
  30.     $resultado = mysql_query($sql);
  31. ?>

Espero que les funcione!
  #6 (permalink)  
Antiguo 03/06/2011, 06:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Subir imagenes y datos a base de datos

Gracias Eleazan! Creo que ya me va quedando todo más claro!

Etiquetas: 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 22:07.