Foros del Web » Programando para Internet » PHP »

no puedo subir imagenes a la BD

Estas en el tema de no puedo subir imagenes a la BD en el foro de PHP en Foros del Web. Hola, estoy luchando con esto desde hace rato y no hay caso!. Lo mas mas raro es que no me sale ningún error, pero nunca ...
  #1 (permalink)  
Antiguo 27/02/2006, 07:52
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
no puedo subir imagenes a la BD

Hola, estoy luchando con esto desde hace rato y no hay caso!.
Lo mas mas raro es que no me sale ningún error, pero nunca sube a la BD mysql.

Cuando lo inserto en la BD desde el phpmyadmin, no hay problema.

Debo tener algun permiso especial o configurar algo?

qué puede ser?
Les repito, no me sale ningún error, y llega hasta la consulta de alta, inclusive me muestra el mensaje de que se cargo la imagen, pero en la BD no aparece el registro.
Ya revise los campos de la tabla y están bien.
me estoy enloqueciendo!
les mando mi código.

foreach ($_FILES['archivos']['name'] as $key => $name)
{ # Iterar sobre la colección de archivos
$tipo = $_FILES['archivos']['type'][$key];

if (($tipo == "image/gif") OR ($tipo == "image/jpeg"))
{
{
$tamanio = $_FILES['archivos']['size'][$key];

if ($tamanio < 200000000)
{

$tmp_name = $_FILES['archivos']['tmp_name'][$key];

$imagen = addslashes(fread(fopen($tmp_name, "rb"),filesize($tmp_name)));


$alta_img = mysql_query("INSERT INTO perfiles_img VALUES ('', '$id', '$imagen', '$tipo', '$tamanio'",$conexion);
echo "El archivo ha sido cargado correctamente.";



}
else
{
echo "El archivo excede el tamaño permitido";


}# if

}
else
}

echo "La extensión o el tamaño de los archivos no es correcta. Se permiten archivos .gif o .jpg";

} #if



} #foreach
  #2 (permalink)  
Antiguo 27/02/2006, 08:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y los otros datos de tu archivo que manejas como el "tipo" o el "tamaño" .. ¿los ves ingresados en tu BBDD en el registro correspondiente?

Haz probado hacer un:

Código PHP:
<?
echo "<pre>";
print_r($_FILES);
echo 
"</pre>";
Para ver que tienes ahí y con qué estructura?

Un saludo,
  #3 (permalink)  
Antiguo 27/02/2006, 08:18
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Cluster, acabo de probarlo (despues de leer tu mensaje) y $_FILE tiene los datos de la imagen.
En la BD no da de alta nada.

el
echo "<pre>";
print_r($_FILES);
echo "</pre>";


me devuelve esto:

Array
(
[archivos] => Array
(
[name] => Array
(
[0] => lady_news_anchor_sm_nwm.gif
)

[type] => Array
(
[0] => image/gif
)

[tmp_name] => Array
(
[0] => C:/PHP/uploads/\php13.tmp
)

[error] => Array
(
[0] => 0
)

[size] => Array
(
[0] => 13247
)

)

)
  #4 (permalink)  
Antiguo 27/02/2006, 08:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y has comprobado que tiene $key y $name en tu bucle:

foreach ($_FILES['archivos']['name'] as $key => $name){
}

?¡?

Según tu caso en $name tendrías mensajes de error concretos ..

Fijate en este ejemplo:
Cita:
Envío de multiples ficheros
Bob Doe
09-Aug-2005 12:17
Here is a the simple test form I needed, pieced togther from 2 or 3 posts in the documentation elsewhere.

Código PHP:
<html>
<head>
<title>HTML Form for uploading image to server</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>
<?php
//places files into same dir as form resides
foreach ($_FILES["pictures"]["error"] as $key => $error) {
   if (
$error == UPLOAD_ERR_OK) {
       echo
"$error_codes[$error]";
       
move_uploaded_file(
         
$_FILES["pictures"]["tmp_name"][$key], 
         
$_FILES["pictures"]["name"][$key
       ) or die(
"Problems with upload");
   }
}
?>
</body>
</html>
(ahí se "mueve" la imagen .. en tu caso la "lees" de su ubicación temporal para llevartelo a un campo de tu BBDD, el proceso es el mismo en el bucle dato junto con tus otras validaciones si las requieres)

http://www.php.net/manual/es/feature...d.multiple.php

Un saludo,
  #5 (permalink)  
Antiguo 27/02/2006, 08:55
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Si, cluster. Me he fijado y las variables estan bien, inclusive llega a convertir el archivo en binario. Lo que no funciona es el insert.
Pobre hacer otra tabla, y un script nuevo (usando un ejemplo) y funciona, me sube a la BD, pero cuando intento subir a la tabla "original" otra vez no funciona.
  #6 (permalink)  
Antiguo 27/02/2006, 09:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa la función mysql_error() para ver mensajes de error:

$alta_img = mysql_query("INSERT INTO perfiles_img VALUES ('', '$id', '$imagen', '$tipo', '$tamanio'",$conexion) or die (mysql_error());

Por lo demás no se vé las funciones de conexión a tu BBDD y demás .. revisalas y usar mysql_error()

Un saludo,
  #7 (permalink)  
Antiguo 27/02/2006, 09:27
Avatar de chepi  
Fecha de Ingreso: abril-2005
Ubicación: Posadas - Misiones
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Cluster, mil gracias. No vas a creer lo que era (una boludez!).
Me faltaba el parentesis ")", despues de tamanio.

Que boba!
Un beso!!!
  #8 (permalink)  
Antiguo 27/02/2006, 11:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por chepi
Cluster, mil gracias. No vas a creer lo que era (una boludez!).
Me faltaba el parentesis ")", despues de tamanio.

Que boba!
Un beso!!!
Ahora que lo dices .. si, se "veía" .. pero como a veces nos pasa que no "vemos" .. lo mejor es acostumbrarse a usar funciones como "mysql_error()" que te van a indicar que hay un problema tal vez de "SQL" o de conexión que PHP no tiene por qué informar (es un fallo a la hora de ejecutar tu consulta en sí).

Un saludo,
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 04:30.