Foros del Web » Programando para Internet » PHP »

Insertar imagen en base de datos

Estas en el tema de Insertar imagen en base de datos en el foro de PHP en Foros del Web. alguien porfavor me puede ayudar con este script qu lo encontre en el forum pero no da mucho detalles de encuanto a la base de ...
  #1 (permalink)  
Antiguo 31/12/2011, 10:54
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Insertar imagen en base de datos

alguien porfavor me puede ayudar con este script qu lo encontre en el forum pero no da mucho detalles de encuanto a la base de datos
Cita:
<?php
function mysql_escape($cadena) { //funcion para limpiar campos del form de codigo malicioso
if(get_magic_quotes_gpc() != 0) {
$cadena = stripslashes($cadena);
}
return mysql_real_escape_string($cadena);
}


//nos conectamos a la base de datos
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('base_de_datos')or die ('Error al seleccionar la Base de Datos: '.mysql_error());




if(isset($_FILES['fichero']['name'])) { //comprovamos que se haya cargado el archivo

if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {


//empieza la redimension, tomamos la imagen temporal subida que puede ser jpg, png o gif
$info = getimagesize($_FILES['fichero']['tmp_name']);
//segun el caso sera jpg, gif, png
switch ($info[2]) {
case 1:
$imagen = imagecreatefromgif($_FILES['fichero'] ['tmp_name']); break;
case 2:
$imagen = imagecreatefromjpeg($_FILES['fichero'] ['tmp_name']); break;
case 3:
$imagen = imagecreatefrompng($_FILES['fichero'] ['tmp_name']); break;
// etcétera //
}

$original = $imagen;
$original_w = imagesx($original);
$original_h = imagesy($original);

$max = 50; //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS segun la tabla donde la muestres

if($original_w>$original_h) {
$muestra_w = $max;
$muestra_h = intval(($original_h/$original_w)*$max);
} else {
$muestra_w = intval(($original_w/$original_h)*$max);
$muestra_h = $max;
}

$muestra = imagecreatetruecolor($muestra_w,$muestra_h);
imagecopyresampled($muestra,$original,0,0,0,0, $muestra_w,$muestra_h,$original_w,$original_h);//aqui se crea la imagen en la variable $muestra

imagedestroy($original); // aqui destruyo el original, pues no hace falta ya


// comenzamos a guardar el archivo
$ruta_destino = "images/"; //ponemos la ruta donde queremos almacenar los archivos en el server
$namefinal= trim ($_FILES['fichero']['name']); //quito espacios iniciales y finales del nombre del archivo
$namefinal= ereg_replace (" ", "", $namefinal); //quito los espacios entre el nombre para no tener despues problemas de codigo
$uploadfile= $ruta_destino . $namefinal; //monto la ruta seguida del nombre del archivo en $uploadfile
if(imagejpeg($muestra,$uploadfile,'100')) { // se coloca en su lugar final, el 100 el la calidad del jpg
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$uploadfile."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";







//insertamos en la BD los campos del form
if(isset($_SESSION['id'])) // Aqui actualizaremos el perfil del usuario en la base de datos y le mostraremos que esta conectado
{
session_start();
$orden = ("select * from tabla_base_datos WHERE imagen = '0'");
mysql_query("UPDATE tabla_base_datos SET imagen='".$_FILES['fichero']['name']."'") ;



}

}else{echo "no se guardo la foto, ni se inserto en la Base de Datos";}
}else{echo "no se subio foto";}
}else{echo "no se selecciono la foto";}


//ahora el formulario

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<p>Imagen perfil:
<input name="fichero" type="file" size="20" maxlength="20">
<input name="submit" type="submit" value="Upload!">
</form>
</body>

</html>
el script sube la imagen a al servidor de forma corecta pero no inserta la ubicacion ni nada en la base de datos porfa necesito una ayudita puestoa que me parece exelente este script es bantante seguro que los usuarios suban la imagen asi
  #2 (permalink)  
Antiguo 31/12/2011, 11:03
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Insertar imagen en base de datos

Hay te dice que tomas la imagen la cambias de tamaño y nombre validas si hay una ya, sino envia error, ademas de guardarla en un directorio en tu carpeta de archivos luego te muestra si se subio o no la imagen..

otras cosas como quitar espacio en las variables conectar a la BD; etc.

Si lees un poquito mas tu mismo código tiene comentarios diciendo que hace cada linea.como por ejemplo el cambio de tamaño a tu gusto las variables casi todo.. lo demás a mi parecer que haría yo es ponerlo a pruebas y ver que hace y así aprendo. jeje saludos
  #3 (permalink)  
Antiguo 31/12/2011, 11:06
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Insertar imagen en base de datos

si el me sube la imagen perfectamente al servidor lo que no encuentro es subirla a la base de datos, creo que el actualiza una imagen ya creada en una base de datos
Cita:
//insertamos en la BD los campos del form
if(isset($_SESSION['id'])) // Aqui actualizaremos el perfil del usuario en la base de datos y le mostraremos que esta conectado
{
session_start();
$orden = ("select * from tabla_base_datos WHERE imagen = '0'");
mysql_query("UPDATE tabla_base_datos SET imagen='".$_FILES['fichero']['name']."'") ;



}
no que crea una nueva.
cuales son las celdas que deberia agregar en la tabla_base_datos?
  #4 (permalink)  
Antiguo 31/12/2011, 11:09
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Insertar imagen en base de datos

puedes enviarme un ejemplo de como cargarla en la base de datos quitando
Cita:
//insertamos en la BD los campos del form
if(isset($_SESSION['id'])) // Aqui actualizaremos el perfil del usuario en la base de datos y le mostraremos que esta conectado
{
session_start();
$orden = ("select * from tabla_base_datos WHERE imagen = '0'");
mysql_query("UPDATE tabla_base_datos SET imagen='".$_FILES['fichero']['name']."'") ;



}
y creando una funcion para la agrege en la base de datos?
  #5 (permalink)  
Antiguo 31/12/2011, 11:19
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Insertar imagen en base de datos

Ese codigo que pusiste es el de subirla
exactamente esta linea:

Código SQL:
Ver original
  1. mysql_query("UPDATE tabla_base_datos SET imagen='".$_FILES['fichero']['name']."'") ;


puedes crear:

Código PHP:
Ver original
  1. funtion cargarimagen(){
  2. //insertamos en la BD los campos del form
  3. if(isset($_SESSION['id'])) // Aqui actualizaremos el perfil del usuario en la base de datos y le mostraremos que esta conectado
  4. {
  5. $orden = ("select * from tabla_base_datos WHERE imagen = '0'");
  6. $resultado="mysql_query("UPDATE tabla_base_datos SET imagen='".$_FILES['fichero']['name']."'")" ;
  7.  
  8. if (!$resultado)
  9.         return false;
  10.         else
  11.     return true;
  12.  
  13. }
  14.  
  15.  
  16. }

Colocas donde quiera llamar esa funcion

cargarimagen();

algo asi aunque no soy tan experto me estoy iniciando en el mundo de la programacion web y orientada a objetos.
  #6 (permalink)  
Antiguo 31/12/2011, 11:21
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Insertar imagen en base de datos

PD: es function un error de dedo mio.
  #7 (permalink)  
Antiguo 31/12/2011, 11:24
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Insertar imagen en base de datos

ok gracias pero explicame algo rapidito subira la imagen en la "tabla_base_datos " en la columna "imagen"
es lo que no comprendo muy bien, puede explicarme cuales serian las columna para la base de datos?
y gracias de antemano
  #8 (permalink)  
Antiguo 31/12/2011, 11:41
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Insertar imagen en base de datos

utiliza una tabla que se llame imagen por ejemplo con con 2 campos id_imagen, nombre_imagen, en nombre_imagen subiras solo el nombre de la imagen en el codigo lo hace:

Código PHP:
Ver original
  1. $namefinal= trim ($_FILES['fichero']['name']); //quito espacios iniciales y finales del nombre del archivo
  2. $namefinal= ereg_replace (" ", "", $namefinal); //quito los espacios entre el nombre para no tener despues problemas de codigo

luego creas una carpeta en tu directorio ejemplo: "images". y hay es que subiras las imagenes con estas lineas:

Código PHP:
Ver original
  1. $ruta_destino = "images/"; //ponemos la ruta donde queremos almacenar los archivos en el server
  2. de codigo
  3. $uploadfile= $ruta_destino . $namefinal; //monto la ruta seguida del nombre del archivo en $uploadfile

y obiviamente subes el nombre a la BD:


Código PHP:
Ver original
  1. if(isset($_SESSION['id'])) // Aqui actualizaremos el perfil del usuario en la base de datos y le mostraremos que esta conectado
  2. {
  3. $orden = ("select * from imagen WHERE id_imagen = '0'");
  4. mysql_query("UPDATEimagen SET imagen='".$_FILES['fichero']['name']."'") ;

EL:
Código PHP:
Ver original
  1. $_FILES['fichero']['name']

te detecta el nombre de la imagen que tienes actualmente. hay muchas mas atributos como:

$_FILES['fichero']['size'] define tamaño.
$binario_tipo=$_FILES['archivo']['type']; te dice el tipo jpg, gif etc


Basicamente no subes la imagen a la BD porque la haria muy pesada con el tiempo, solo guardas el nombre y para llamar la imagen haces lo mismo literalmente ejemplo:

Código PHP:
Ver original
  1. $sql = 'SELECT  FROM imagen WHERE id_imagen='".$tuvariable."'";
  2. $result = mysql_query($sql, $link);
  3. $row = mysql_fetch_array($result);
  4.  
  5. //defines tu ruta de nuevo:
  6. $ruta_destino = "images/";
  7.  
  8. //y concatenas el nombre de la imagen con tu ruta:
  9. $url="images/".$row['nomber_imagen'];
  10.  
  11. //muestras tu imagen
  12. echo "<img scr=".$url.">";

Como tu ejemplo ya le da tamaño la imagen no necesitarias darle valores de witdh o height pero depende de lo quieras hacer... creo hay esta mas o menos jeje,
  #9 (permalink)  
Antiguo 31/12/2011, 11:48
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Insertar imagen en base de datos

Un ejemplo mas sencillo que el tuyo para que lo analices y lo mejores como el otro..

Código PHP:
Ver original
  1. $conexion = mysql_connect("127.0.0.1","root","") or die("No se pudo realizar la conexion con el servidor.");
  2. mysql_select_db("imagenes",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.
  3.  
  4. $ruta="./uploads/";//ruta carpeta donde queremos copiar las imágenes
  5. $uploadfile_temporal=$_FILES['fichero']['tmp_name']; //nombre de la imagen
  6. $uploadfile_nombre=$ruta.$_FILES['fichero']['name'];
  7. if (is_uploaded_file($uploadfile_temporal))
  8. {
  9.     move_uploaded_file($uploadfile_temporal,$uploadfile_nombre); //se mueve la imagen al directorio "uploads/"
  10. }
  11. else
  12. {
  13. echo "error";
  14. }
  15.  
  16. $id = mysql_insert_id();
  17.    // Guardamos en la BBDD el nombre de la imagen
  18.    $nombre=$_FILES['fichero']['name'];
  19.    $nombre_usuario=$_POST['usuario'];
  20.     $sql= "INSERT INTO imagen (nombre,id,usuario) VALUES ('$nombre','','$nombre_usuario')";
  21.     $resultado = mysql_query($sql);
  22.  
  23.     // Por si queremos la ID asignada a la imagen
  24.    
  25. $sql = mysql_query("SELECT * FROM imagen WHERE nombre = '".$nombre."'");
  26. $filas=mysql_fetch_array($sql);
  27. $mostrar=$filas['nombre'];
  28. echo $mostrar;
  29.  
  30.     $url="./uploads/".$mostrar;
  31. ?>
  32. <html><body>
  33. <br>
  34. //formulario para mostrar la imagen
  35. <form action="procesar.php" method="post" enctype="multipart/form-data"> <br><br><br><br><br>
  36. <table border="0" cellpadding="15" align="center">
  37. <tr>
  38. <td></td>
  39. <td></td>
  40. <td >nombre del usuario:<?php  echo  $filas['usuario'];  ?></td>
  41. </tr>
  42. <tr>
  43. <td><?php  echo "<img width=88 height=80 src=".$url.">";  ?></td>
  44. <td></td>
  45. <td> </td>
  46. </tr>
  47. <tr>
  48. <td></td>
  49. <td></td>
  50. <td><?php   echo "<a href=modificar.php?id=".$filas['id'].">modificar</a>";?></td>
  51. </tr>
  52. </table>
  53. </form>
  54. </body></html>
  55. <html>
  #10 (permalink)  
Antiguo 01/01/2012, 04:50
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: Insertar imagen en base de datos

codigo php

<?php
// aqui inicia el codigo de cargar fichero
$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

////////////// Parte añadida 1 //////////////
//array de archivos disponibles
$archivos_disp_ar = array('jpg', 'jpeg', 'gif', 'png', 'tif', 'tiff', 'bmp');
//carpteta donde vamos a guardar la imagen
$carpeta = 'files/';
//recibimos el campo de imagen
$imagen = $_FILES['imagen']['tmp_name'];
//guardamos el nombre original de la imagen en una variable
$nombrebre_orig = $_FILES['imagen']['name'];
//el proximo codigo es para ver que extension es la imagen
$array_nombre = explode('.',$nombrebre_orig);
$cuenta_arr_nombre = count($array_nombre);
$extension = strtolower($array_nombre[--$cuenta_arr_nombre]);

//validamos la extension
if(!in_array($extension, $archivos_disp_ar)) $error = "Este tipo de archivo no es permitido";

if(empty($error)){

//creamos nuevo nombre para que tenga nombre unico
$nombre_nuevo = time().'_'.rand(0,100).'.'.$extension;
//nombre nuevo con la carpeta
$nombre_nuevo_con_carpeta = $carpeta.$nombre_nuevo;
//por fin movemos el archivo a la carpeta de imagenes
$mover_archivos = move_uploaded_file($imagen , $nombre_nuevo_con_carpeta);
//de damos permisos 777
chmod($nombre_nuevo_con_carpeta,0777);

///////////////////////////////////////////

//esto es para la fecha
$fecha = date("d-m-Y");

// se agrega "archivo_archivos, extension_archivos y la fecha" a la consulta y dos extra %s separados por comas
$nombre = $_POST["tipo"]; $usuario = $_POST["nombre"];
$sql = "INSERT INTO Archivos (Nombre, Usuario, Archivo, Extension, Fecha)VALUES('{$nombre}','{$usuario}','{$nombre_nu evo}','{$extension}','{$fecha}')";
mysql_query($sql);


//este codigo es para informarle al usuario que el archivo se ha cargado exitosamente
$respuesta ='Su archivo se ha enviado exitosamente';


}
}

?>
  #11 (permalink)  
Antiguo 01/01/2012, 04:51
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: Insertar imagen en base de datos

codigo HTML



<table width="1024" border="0" align="center">
<tr>
<td width="49"><span class="style1">
<img src="img_btn/<?php if(!empty($error)){echo 'cancelar';}elseif(!empty($respuesta)){echo 'acept';}else{echo '';}?>.png" width="<?php if(!empty($error)){echo '48';}elseif(!empty($respuesta)){echo '48';}else{echo '0';}?>" height="<?php if(!empty($error)){echo '48';}elseif(!empty($respuesta)){echo '48';}else{echo '0';}?>" /></span></td>
<td width="965"><span class="style1">
<?php if(!empty($error)){echo 'Error: este formato no es permitido';}elseif(!empty($respuesta)){echo 'Su archivo se ha enviado exitosamente';}else{echo '';}?>
</span></td>
</tr>
</table>





<table width="60%" border="0" align="center">
<tr>
<td><span class="style1">Tamaño maximo Permitido 1.99 MB</span><br />
<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<label for="imagen"></label>
<table width="100%" border="0">
<tr>
<td width="50%"><div align="center" class="style1">1. Seleccione la imagen</div></td>
<td width="50%"><div align="center" class="style1">2. Nombre de la imagen</div></td>
</tr>
<tr>
<td><div align="center">
<input name="imagen" type="file" class="style21" id="imagen" />
<input type="hidden" name="MM_insert" value="form1" />
<input name="nombre" type="hidden" id="nombre" value="<?php echo $_SESSION['Usuario']; ?>" />
</div></td>
<td><div align="center">
<input name="tipo" type="text" id="tipo" size="40" maxlength="99" />
</div>
</label></td>
</tr>
<tr>
<td colspan="2"><div align="center" class="enviar">
<input name="enviar2" type="image" onclick="MM_validateForm('tipo','','R');return document.MM_returnValue" src="img_btn/add.png" />
<br />
<span class="style1">Subir imagen</span></div></td>
</tr>
</table>
</form> <hr /> </td>
</tr>
</table>

Etiquetas: formulario, html, mysql, tabla, variables, usuarios
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 17:52.