Foros del Web » Programando para Internet » PHP »

Problema en guardar una imagen en Mysql y PHP

Estas en el tema de Problema en guardar una imagen en Mysql y PHP en el foro de PHP en Foros del Web. Hola ya me bloquie me pueden decir mi error o un codigo mas sencillo para almacenar una direccion de una imagen en una Base de ...
  #1 (permalink)  
Antiguo 14/12/2008, 13:12
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema en guardar una imagen en Mysql y PHP

Hola
ya me bloquie me pueden decir mi error o un codigo mas sencillo para almacenar una direccion de una imagen en una Base de Datos.

este es mi codigo de guardar:
<html>
<head>
<head>

<title>Index</title>

</head>
<body>
<?php

echo "<form name=\"form1\" enctype='multipart/form-data' action=\"save_producto.php\">";

echo "Codigo<br>";
echo "<input type=\"text\" name=\"codigo\" value=\"\"><br><br>";
echo "Nombre<br>";
echo "<input type=\"text\" name=\"nombre\" value=\"\"><br><br>";
echo "Imagen<br>";
echo "<input type=\"file\" name=\"imagen\"><br><br>";
echo "</select><br>";
echo "<input type=\"submit\" value=\"Enviar\" onclick=\"javascript: valida(); return false\>";
echo "</form>";


?>

</body>
</html>

y este es el de salvar

<?php
require "./functions/functions.php";
$con=conecta();
$codigo=$_POST['codigo'];
$nombre=$_POST['nombre'];
$imagen=$_POST['imagen'];

$imagen_n=$_FILES['imagen']['name'];
$imagen_f=$_FILES['imagen']['tmp_name'];

$fileName = '';
$val = time();

//Sube videos e imagen
if ($img_n != '') {
$fileName = $val.".jpg";
$dir = "./Productos/";
@copy($imagen_f, $dir.$filename);
}

$sql="INSERT INTO producto Values ($codigo,'$nombre','$filename')";
$res=mysql_query($sql,$con);

?>

Pero no funciona . En la de guardar abre dos campos de texto y en la de imagen muestra un campo de examinar.

Gracias.
  #2 (permalink)  
Antiguo 14/12/2008, 13:23
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Problema en guardar una imagen en Mysql y PHP

Primero que nada, para que utilizas PHP para imprimir el formulario:
No tienes que usar PHP para imprimir ese formulario.

Código PHP:
<html>
<head>
<head>

<title>Index</title>

</head>
<body>
<?php

echo "<form name=\"form1\" enctype='multipart/form-data' action=\"save_producto.php\">";

echo 
"Codigo<br>";
echo 
"<input type=\"text\" name=\"codigo\" value=\"\"><br><br>";
echo 
"Nombre<br>";
echo 
"<input type=\"text\" name=\"nombre\" value=\"\"><br><br>";
echo 
"Imagen<br>";
echo 
"<input type=\"file\" name=\"imagen\"><br><br>";
echo 
"</select><br>";
echo 
"<input type=\"submit\" value=\"Enviar\" onclick=\"javascript: valida(); return false\>";
echo 
"</form>";


?>

</body>
</html>
2. No puedes recuperar el valor de un campo FILE por medio de $_POST.

Código PHP:
$imagen=$_POST['imagen']; 
3. Defines los nombres como imagen_n e imagen_f, pero usas img_n en tu IF.

Código PHP:
$imagen_n=$_FILES['imagen']['name']; // <-- dale un vistazo a los nombres de las variables
$imagen_f=$_FILES['imagen']['tmp_name'];

$fileName '';
$val time();

//Sube videos e imagen
if ($img_n != '') { // <-- Aqui usas una variable totalmente diferente 
Por eso no copia la imagen.

4. Recuerda que guardas la imagen en $dir.$filename, y solo guardas el filename en tu consulta:

Código PHP:
$sql="INSERT INTO producto Values ($codigo,'$nombre','$filename')"
5. Antes de darle la extension .jpg, asegurate de que el archivo es un JPEG. Puedes usar $_FILES['imagen']['type'], eso devuelve el MIME type de el archivo subido, si el archivo es jpg, aparecera: image/jpeg

Código PHP:
$fileName $val.".jpg"
6. No uses copy, move_uploaded_file() es mas seguro:

Código PHP:
@copy($imagen_f$dir.$filename); 
  #3 (permalink)  
Antiguo 14/12/2008, 13:35
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema en guardar una imagen en Mysql y PHP

Hola Ronruby

Gracias es que de hecho mostre uno de mis tanto codigos erroneos y tienes razon este era uno de mis primeros ... pero me ayudaste en el error q no sabia.
Grax me faltaba ponerle el $dir.$filename
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 03:03.