Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] como inserto imagen y la tabla de base de datos

Estas en el tema de como inserto imagen y la tabla de base de datos en el foro de PHP en Foros del Web. hola si alguien puede ayudarme en esto las imagenes se suben atraves de un formulario a una carpeta llamada (imagenes) y se gurada la ruta ...
  #1 (permalink)  
Antiguo 28/07/2015, 10:04
 
Fecha de Ingreso: julio-2015
Mensajes: 21
Antigüedad: 8 años, 9 meses
Puntos: 0
como inserto imagen y la tabla de base de datos

hola si alguien puede ayudarme en esto
las imagenes se suben atraves de un formulario a una carpeta llamada (imagenes) y se gurada la ruta asi (C:WindowsTEMPphpBFCE.tmp) en la tabla de imagenes de base de datos. me pregunta es quiero que se guardan asi (gato.jpg) para poder mostrarlas despues

la tabla de imagenes

id_imagen
usuario_id
usuario_freg
fichero----------------- aqui se guarda la imagen asi (C:WindowsTEMPphpBFCE.tmp)
descripcion

quiero que se guarde la ruta en la columna de fichero de la tabla imagenes ejemplo asi : arbol.jpg


el formulario

Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <title>Documento sin t&iacute;tulo</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  7. </head>
  8.  
  9. <body>
  10. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">  
  11.  
  12.  
  13.         <label>descripcion:</label><br/><BR>
  14.         <input type="text" name="descripcion" maxlength="15" /><br/>
  15. <input name="fichero" type="file" size="35" />
  16.      
  17.   <input name="submit" type="submit" value="Upload!">    
  18. </form>  
  19. </body>  
  20.  
  21. </html>


el codigo que sube las imagenes



Código PHP:
Ver original
  1. <?php  
  2. function mysql_escape($cadena) {  //funcion para limpiar campos del form de codigo malicioso  
  3.     if(get_magic_quotes_gpc() != 0) {  
  4.         $cadena = stripslashes($cadena);  
  5.     }  
  6.     return mysql_real_escape_string($cadena);  
  7. }    
  8.  
  9.  
  10.  
  11. if(isset($_FILES['fichero']['name'])) {  //comprovamos que se haya cargado el archivo  
  12.  
  13.    if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {  
  14.      
  15.      
  16.    //empieza la redimension, tomamos la imagen temporal subida que puede ser jpg, png o gif  
  17.    $info = getimagesize($_FILES['fichero']['tmp_name']);  
  18.    //segun el caso sera jpg, gif, png  
  19.    switch ($info[2]) {  
  20.   case 1:  
  21.     $imagen = imagecreatefromgif($_FILES['fichero'] ['tmp_name']); break;  
  22.   case 2:  
  23.     $imagen = imagecreatefromjpeg($_FILES['fichero'] ['tmp_name']); break;  
  24.   case 3:  
  25.     $imagen = imagecreatefrompng($_FILES['fichero'] ['tmp_name']); break;  
  26.   // etcétera //  
  27.   }  
  28.  
  29. $original = $imagen;  
  30. $original_w = imagesx($original);  
  31. $original_h = imagesy($original);  
  32.  
  33. $max = 500;  //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS segun la tabla donde la muestres  
  34.  
  35. if($original_w>$original_h) {
  36.     $muestra_w = $max;  
  37.     $muestra_h = intval(($original_h/$original_w)*$max);  
  38.     } else {  
  39.     $muestra_w = intval(($original_w/$original_h)*$max);  
  40.     $muestra_h = $max;  
  41.     }  
  42.  
  43. $muestra = imagecreatetruecolor($muestra_w,$muestra_h);  
  44. imagecopyresampled($muestra,$original,0,0,0,0, $muestra_w,$muestra_h,$original_w,$original_h);//aqui se crea la imagen en la variable $muestra  
  45.  
  46. imagedestroy($original); // aqui destruyo el original, pues no hace falta ya  
  47.  
  48.  
  49. // comenzamos a guardar el archivo  
  50.         $ruta_destino = "imagenes/"; //ponemos la ruta donde queremos almacenar los archivos en el server  
  51.         $namefinal= trim ($_FILES['fichero']['name']); //quito espacios iniciales y finales del nombre del archivo  
  52.         $namefinal= ereg_replace (" ", "", $namefinal); //quito los espacios entre el nombre para no tener despues problemas de codigo  
  53.         $uploadfile= $ruta_destino . $namefinal; //monto la ruta seguida del nombre del archivo en $uploadfile  
  54.         if(imagejpeg($muestra,$uploadfile,'100')) { // se coloca en su lugar final,  el 100 el la calidad del jpg  
  55.                     echo "<b>Upload exitoso!. Datos:</b><br>";  
  56.             echo "Nombre: <i><a href=\"".$uploadfile."\">".$_FILES['fichero']['name']."</a></i><br>";  
  57.             echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";  
  58.                     echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";  
  59.                         echo "<br><hr><br>";  
  60.                        
  61.  
  62.  
  63.                          
  64.  //insertamos en la BD los campos del form  
  65.  if(isset($_SESSION['usuario_id'])) // Aqui actualizaremos el perfil del usuario en la base de datos y le mostraremos que esta conectado
  66. {
  67. $orden = ("select * from usuarios where usuario_id = ". $_SESSION['usuario_id'] ."");
  68.  
  69.  
  70.  
  71.                 $reg = mysql_query("INSERT INTO datos (usuario_id, fichero, descripcion, usuario_freg) VALUES ('".$usuario_id."', '".$fichero."', '".$descripcion."', NOW())");
  72.    
  73.    
  74. }
  75.  
  76.                                       }else{echo "no se guardo la foto, ni se inserto  en la Base de Datos";}  
  77.                      }else{echo "no se subio foto";}  
  78.            }else{echo "";}  
  79.  
  80.  
  81.  //ahora el formulario

las imagenes se guardan bien en la carpeta imagenes
gracias

Última edición por maitara; 28/07/2015 a las 10:14
  #2 (permalink)  
Antiguo 28/07/2015, 10:16
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: como inserto imagen y la tabla de base de datos

no guardes la ruta de la imagen, guarda solo el nombre, debes pensar a futuro, y cargas la imagen en html solo cambiando el nombre por la guardada, yo utilizo este para subir unos archivos xml, pero puedes adaprtarlo para subir una imagen:

Código PHP:
Ver original
  1. <?php
  2.  
  3.      // Datos de conexión a configurar
  4.     $directorio = $_SERVER['DOCUMENT_ROOT']."app/listas/";
  5.  
  6.     // Recibo los datos
  7.     $rif = $_POST['rif'];
  8.     $unidad = $_POST['unidad'];
  9.     $fecha = date("Y-m-d");
  10.         $nombre = $_FILES['userfile']['name'];
  11.         $tipo = $_FILES['userfile']['type'];
  12.         $tamano = $_FILES['userfile']['size'];
  13.    
  14.         //extraemos la extension del archivo de imagen
  15.         list($a, $b) = explode('/', $tipo);
  16.        
  17.    
  18.     //asignamos el nuevo nombre de la imagen
  19.    
  20.     $nuevonombre = $rif."_".$unidad.".".$b;
  21.    
  22.     // Muevo la imagen desde su ubicación
  23.     // temporal al directorio definitivo
  24.     move_uploaded_file($_FILES['userfile']['tmp_name'],$directorio.$nuevonombre);
  25.  
  26.     // Conecto a la BBDD
  27.     $db = new MySQLi($hostname_seguridad, $username_seguridad, $password_seguridad, $database_seguridad);
  28.        
  29.      // Guardamos en la BBDD
  30.     $sql = $db->query("INSERT INTO listas_personal (rif, unidad_explot, lista_personal, fecha) values ('$rif' , '$unidad' , '$nuevonombre' , '$fecha') ON DUPLICATE KEY UPDATE lista_personal = '$nuevonombre' , fecha = '$fecha'");
  31.     if($sql){
  32.         $msg = "Datos cargados";
  33.     } else {
  34.         $msg = "Datos no cargados";
  35.     }
  36. ?>
el codigo renombra el archivo que subes por el que quieras o puedes dejar el nombre original, lo que estas haciendo arriba en el guardado esta mal porque estas guardando una ruta vacia
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 28/07/2015, 10:19
 
Fecha de Ingreso: julio-2015
Mensajes: 21
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

gracias, por tu respuesta pero porque no esta bien guardar la ruta, si puede hacer que mi codigo me suba la imagen como arbol.jpg en vez de C:WindowsTEMPphpBFCE.tmp es dicir quiero guardar el nombre como lo hago
  #4 (permalink)  
Antiguo 28/07/2015, 10:28
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: como inserto imagen y la tabla de base de datos

aqui esta el codigo adaptado para subir una imagen y guardar en la base de datos el nombre de esta: adaptalo a tus necesidades:
Código PHP:
Ver original
  1. <?php
  2.  if($_POST['usuario']=="")
  3.     {
  4.         echo "El nombre de usuario esta vacio";
  5.     }else {
  6.     // Datos de conexión a configurar
  7.     $user = "root";
  8.     $pass = "";
  9.     $bbdd = "pase";
  10.     $host = "127.0.0.1";
  11.     // Ruta donde se guardarán las imágenes
  12.     $directorio = $_SERVER['DOCUMENT_ROOT']."imagenes/";
  13.  
  14.     // Conecto a la BBDD
  15.     $db = new MySQLi($host, $user, $pass, $bbdd);
  16.    
  17.     // Recibo los datos de la imagen
  18.     $usuario = $_POST['usuario'];  
  19.     $nombre = $_FILES['userfile']['name'];
  20.     $tipo = $_FILES['userfile']['type'];
  21.     $tamano = $_FILES['userfile']['size'];
  22.    
  23.         //extraemos la extension del archivo de imagen
  24.         //list($a, $b) = explode('/', $tipo);
  25.        
  26.    
  27.     //asignamos el nuevo nombre de la imagen
  28.    
  29.     //$nuevonombre = $usuario.".".$b;
  30.    
  31.     //Verificamos que no hay una imagen con el mismo nombre en la base
  32.  
  33.     // Muevo la imagen desde su ubicación
  34.     // temporal al directorio definitivo
  35.     move_uploaded_file($_FILES['userfile']['tmp_name'],$directorio./*$nuevonombre*/$nombre);
  36.    
  37.      // Guardamos en la BBDD
  38.     $sql = $db->query("INSERT into datos (user,pass) values ('$usuario','$nombre')");
  39.     //$resultado = mysql_query($sql);
  40.  
  41.     // Por si queremos la ID asignada a la imagen
  42.    // $id = mysql_insert_id();
  43.     $verifica = $db->query("SELECT pass FROM datos WHERE pass = '$nombre'");
  44.     $result = $verifica->fetch_assoc();
  45.     $totalRows = mysqli_num_rows($verifica);
  46.     if($result['pass']==$nombre)
  47.     {
  48.         echo "Datos cargados con exito<br>";
  49.         echo "<img src='imagenes/".$nombre."' width='100px' height='120px'/>";
  50.     } else {
  51.         echo "La imagen no se registro";
  52.     }
  53.     }
  54. ?>
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 28/07/2015, 10:36
 
Fecha de Ingreso: julio-2015
Mensajes: 21
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

yo quiero saver donde esta el fallo o el error en mi codigo porque necesito este codigo no quiero adaptar otro porque tambien tengo que insertar el usuario_id y usuario_freg.... o porque se me guarda la ruta y no el nombre ,donde esta el fallo
gracias y muchas gracias si puedes ayudarme en adaptar mi codigo te lo agradesco
  #6 (permalink)  
Antiguo 28/07/2015, 12:58
 
Fecha de Ingreso: julio-2015
Mensajes: 21
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

alguien puede ayudarme gracias
  #7 (permalink)  
Antiguo 28/07/2015, 13:27
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: como inserto imagen y la tabla de base de datos

osea tu hiciste un copia y pega de otro codigo, lo digo porque el que te pase facilmente lo puedes adaptar para que guarde tanbto la imagen en una carpeta, y los datos que quieras en tu base de datos al mismo tiempo sin problemas, ahora igual dejame ver si le hecho un ojo a tu problema en el cual te estas enrrollando de mas
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 28/07/2015, 13:34
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: como inserto imagen y la tabla de base de datos

te pregunto, de donde sacar la variable $fichero que no le veo por ningun lado??????????????????

y si cambias esto:
Código PHP:
Ver original
  1. $reg = mysql_query("INSERT INTO datos (usuario_id, fichero, descripcion, usuario_freg) VALUES ('".$usuario_id."', '".$fichero."', '".$descripcion."', NOW())");

por eso:
Código PHP:
Ver original
  1. $reg = mysql_query("INSERT INTO datos (usuario_id, fichero, descripcion, usuario_freg) VALUES ('".$usuario_id."', '".$_FILES['fichero']['name']."', '".$descripcion."', NOW())");

asi tambien:
Código PHP:
Ver original
  1. $reg = mysql_query("INSERT INTO datos (usuario_id, fichero, descripcion, usuario_freg) VALUES ('".$usuario_id."', '".$namefinal."', '".$descripcion."', NOW())");
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 28/07/2015, 13:44
Avatar de raffskizze  
Fecha de Ingreso: marzo-2004
Ubicación: ...
Mensajes: 433
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

Tienes mal la consulta, el fichero de la imagen esta en $uploadfile, y el nombre del mismo en la variable $namefinal. Dependiendo de lo que quieras guardar en la bd usa una u otra variable.
__________________
echo ( www.tutorial-enlace.net == tutoriales gratis ) ? 'Aprenderas gratis !!' : 'No aprenderas !!';
  #10 (permalink)  
Antiguo 29/07/2015, 03:30
 
Fecha de Ingreso: julio-2015
Mensajes: 21
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

gracias a todos solucione el problema con esto
Código PHP:
Ver original
  1. $reg = mysql_query("INSERT INTO datos (usuario_id, fichero, descripcion, usuario_freg) VALUES ('".$usuario_id."', '".$_FILES['fichero']['name']."', '".$descripcion."', NOW())");

pero ahora no aparecen las imagenes las tengo en una carpeta llamada imagenes y el nombre en una tabla llamda datos y con esto no se muestran

Código PHP:
Ver original
  1. $consulta=mysql_query("SELECT * FROM datos WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
  2. while($filas=mysql_fetch_array($consulta)){
  3.     $fichero=$filas['fichero'];
  4.     $desc=$filas['descripcion'];
  5.  
  6.  
  7. ?>
  8.  
  9. <?php echo $desc;?><br>
  10. <img src="<?php echo $fichero; ?>" width="180" height="214"><br>
  11.  
  12. <?php }?>



asi se ve en el codigo fuente

<img src="Tree.jpg" width="180" height="214"><br>
me falta poner la carpeta de imagenes o tengo que dar permisos a la carpeta

gracias

Última edición por maitara; 29/07/2015 a las 04:02
  #11 (permalink)  
Antiguo 29/07/2015, 05:20
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: como inserto imagen y la tabla de base de datos

que tal si colocas la ruta a la carpeta donde estan alojadas?????????????

<img src="RUTADELAIMAGEN/Tree.jpg" width="180" height="214">
__________________
[email protected]
HITCEL
  #12 (permalink)  
Antiguo 29/07/2015, 06:34
Avatar de raffskizze  
Fecha de Ingreso: marzo-2004
Ubicación: ...
Mensajes: 433
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

Tienes que tener cuidado con la variable $_FILES['fichero']['name'], ya que si el nombre de la imagen tiene espacios en blanco no se subirá correctamente a la BD, por que el nombre final va en las variables que te comente en mi anterior mensaje.
__________________
echo ( www.tutorial-enlace.net == tutoriales gratis ) ? 'Aprenderas gratis !!' : 'No aprenderas !!';
  #13 (permalink)  
Antiguo 29/07/2015, 06:56
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: como inserto imagen y la tabla de base de datos

Código PHP:
Ver original
  1. $reg = mysql_query("INSERT INTO datos (usuario_id, fichero, descripcion, usuario_freg) VALUES ('".$usuario_id."', '".$namefinal."', '".$descripcion."', NOW())");

y para mostrar la imagen:

Código HTML:
Ver original
  1. <img src="RUTADELAIMAGEN/Tree.jpg" width="180" height="214">
__________________
[email protected]
HITCEL
  #14 (permalink)  
Antiguo 29/07/2015, 07:43
 
Fecha de Ingreso: julio-2015
Mensajes: 21
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: como inserto imagen y la tabla de base de datos

muchas gracias ya se soluciono todo
gracias a todos

Etiquetas: formulario, html, mysql, select, tabla, usuarios, 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:30.