Foros del Web » Programando para Internet » PHP »

Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Estas en el tema de Subir varias imagenes a la vez al host con PHP (PROBLEMA) en el foro de PHP en Foros del Web. Lo que me sucede es que al intentar subir las 5 imagenes solo me pone 1 en la base de datos y en el directorio ...
  #1 (permalink)  
Antiguo 19/05/2011, 17:21
 
Fecha de Ingreso: mayo-2011
Mensajes: 33
Antigüedad: 12 años, 11 meses
Puntos: 4
Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Lo que me sucede es que al intentar subir las 5 imagenes solo me pone 1 en la base de datos y en el directorio que le he puesto( en concreto siempre la imagen que inserto en el tercer imput).
Alguien me podria decir donde estoy fallando?. Gracias de antemano.
Código PHP:
<?php
error_reporting
(E_ALL); 
ini_set('display_errors'1);
include (
'db-cnx.php');
if(isset(
$_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
    
if(!empty(
$_POST['tituloevento'])){

           
$tituloevento $_POST['tituloevento'];    
$tituloevento strtoupper ($tituloevento);
foreach (
$_FILES["foto"]["error"] as $key => $error) {
    if(
$error== UPLOAD_ERR_OK){
$nombre_archivo $_FILES["foto"]["name"][$key];  
$tipo_archivo $_FILES["foto"]["type"][$key];  
$tamano_archivo $_FILES["foto"]["size"][$key];
$temp_archivo $_FILES["foto"]["tmp_name"][$key];
}
}
if (!((
strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && (    $tamano_archivo 1000000))) 
{  
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 1Mg máximo.</td></tr></table>";
}
else 
{  
    
$nom_img $nombre_archivo
     
    
$directorio 'imagesr2011/';
    if (
move_uploaded_file($temp_archivo,$directorio "/" $nom_img)) 
    {
    

           
           
// hacemos el INSERT en la BD
$sqlInsertNot mysql_query("INSERT INTO eventos
(ideventos, tituloevento, fotos)
VALUES ('', '$tituloevento', '$nom_img')"
,
$db_link) or die(mysql_error());
 
 echo 
"Las fotos se publicaron correctamente";



}
   
    }else{
    echo 
"Debe rellenar los campos vacios";
         }
}


 

?> 
<html>
<head>
<title>SISTEMA DE GESTION DE IMAGENES CLUB DE TENIS TORREVIEJA</title>
</head>
<H3>SISTEMA DE GESTION DE IMAGENES CLUB DE TENIS TORREVIEJA</H3>
<form name="evento" action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<body bgcolor="#FFE821">
<p>
Nombre del Evento para las imagenes<br />
<input type="text" name="tituloevento" size="60" />
</p>
<p>
Inserta imagenes<br />
<input type="file" name="foto[]" size="50" />
<input type="file" name="foto[]" size="50" />
<input type="file" name="foto[]" size="50" />
<input type="file" name="foto[]" size="50" />
<input type="file" name="foto[]" size="50" />

</p>

<p>
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>

<a href="imagenesr2011.php">VER IMAGENES</a>
</body>
</html>
  #2 (permalink)  
Antiguo 19/05/2011, 20:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Indenta tu código bien, el problema es que cierras el foreach y solo haces el proceso en una imagen.

Saludos.
  #3 (permalink)  
Antiguo 19/05/2011, 20:41
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

el move_uploaded_file va todo adentro del foreach, lee detenidamente el código
  #4 (permalink)  
Antiguo 19/05/2011, 20:46
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Código PHP:
Ver original
  1. if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
  2.  
  3.            
  4. $tituloevento = $_POST['tituloevento'];    
  5. $tituloevento = strtoupper ($tituloevento);
  6. foreach ($_FILES["foto"]["error"] as $key => $error) {
  7.  
  8. $nombre_archivo = $_FILES["foto"]["name"][$key];  
  9. $tipo_archivo = $_FILES["foto"]["type"][$key];  
  10. $tamano_archivo = $_FILES["foto"]["size"][$key];
  11. $temp_archivo = $_FILES["foto"]["tmp_name"][$key];
  12. if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && (    $tamano_archivo < 1000000)))  
  13. {  
  14.     echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 1Mg máximo.</td></tr></table>";
  15. }
  16. else  
  17. {  
  18.     $nom_img = $nombre_archivo;  
  19.      
  20.     $directorio = 'imagesr2011/';
  21.     if (move_uploaded_file($temp_archivo,$directorio . "/" . $nom_img))  
  22.     {
  23.  
  24.  echo "Las fotos se publicaron correctamente";
  25. }  
  26.  
  27.  
  28. }
  29. }
  30. }

Le saque lo de la base de datos y eso para probarlo en localhost, ahora solo tenes que adaptarlo a tu necesidad
  #5 (permalink)  
Antiguo 19/05/2011, 20:48
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Lamento decirte que el move_uploaded_file está fuera del foreach. Usa el código de marcofbb

PD: Esas son las consecuencias de no identar bien el código.
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 20/05/2011, 02:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 33
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Muchisimas gracias, me ha funcionado!!! pero ahora me surge una duda y es la siguiente:

Me sube las 5 fotos pero me crea un ideventos para cada una de las fotos que se han subido. Me gustaria que solo me crease un ideventos para cada submit que se haga.
¿Es eso posible, y segun mi codigo como se haria?

Os pongo la tabla por si os sirve de ayuda:

Código:
`eventos` (
  `ideventos` int(20) NOT NULL auto_increment,
  `tituloevento` varchar(255) NOT NULL,
  `fotos` varchar(255) NOT NULL default 'logoclub.jpg',
  PRIMARY KEY  (`ideventos`)
) ENGINE=MyISAM
  #7 (permalink)  
Antiguo 20/05/2011, 18:04
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

No es posible con la estructura de tu tabla, por qué quieres hacer eso? No es posible porque el ID es lo que identifica a cada foto.
Lo que puedes hacer son dos opciones: una es juntar los nombres de cada foto separándolos por algún caracter en especial, como por ejemplo un asterisco:
imagen1.jpg*imagen2.jpg*imagen3.jpg*imagen4.jpg*im agen5.jpg
De ahí al extraer las fotos puedes usar explode....

La segunda opción es hacer una tabla con 5 campos más para cada foto, algo así:
ideventos (int)
tituloevento (int)
foto1 (varchar)
foto2 (varchar)
foto3 (varchar)
foto4 (varchar)
foto5 (varchar)

Esas son las opciones, aunque en lo personal me gusta más la primera
Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #8 (permalink)  
Antiguo 20/05/2011, 22:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

O otra opción es crear dos tablas. La primera información general y la segunda las de las fotos y esta solo tenga 3 columnas. Algo como id, id_primera_tabla, foto y solo es cuestión de indicar el id de la primera tabla para ver cuales imagenes corresponden a la primera tabla. Así puedes añadir más de 5 fotos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 20/05/2011, 22:45
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

definitivamente la segunda es la ideal por que asi no limitas el numero de fotos un clasico 1:N
  #10 (permalink)  
Antiguo 21/05/2011, 04:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 33
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

Cita:
Iniciado por Sourcegeek Ver Mensaje
No es posible con la estructura de tu tabla, por qué quieres hacer eso? No es posible porque el ID es lo que identifica a cada foto.
Lo que puedes hacer son dos opciones: una es juntar los nombres de cada foto separándolos por algún caracter en especial, como por ejemplo un asterisco:
imagen1.jpg*imagen2.jpg*imagen3.jpg*imagen4.jpg*im agen5.jpg
De ahí al extraer las fotos puedes usar explode....

La segunda opción es hacer una tabla con 5 campos más para cada foto, algo así:
ideventos (int)
tituloevento (int)
foto1 (varchar)
foto2 (varchar)
foto3 (varchar)
foto4 (varchar)
foto5 (varchar)

Esas son las opciones, aunque en lo personal me gusta más la primera
Saludos!
Me resulta interesante esta primera opcion que me comentas, es lo que habia pensado, que se juntasen todas las fotos en un campo de la tabla separadas por algun caracter y de ahi extraerlas para publicarlas. ¿Me podrias echar una mano con el codigo php para poder hacer esto?. Gracias
  #11 (permalink)  
Antiguo 21/05/2011, 15:28
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Subir varias imagenes a la vez al host con PHP (PROBLEMA)

No es mucha ciencia...
Si obtienes los valores por post simplemente concatenas, por ejemplo:
Código PHP:
$img1 $_POST['img1']; //Así con todas las img
$string $img1.'*'.$img2.'*'.$img3.'*'.$img4.'*'.$img5//Insertalo a Mysql 
Para obtener los valores de Mysql, haces así:
Código PHP:
while ($assoc mysql_fetch_assoc($query)) { //Obtiene los datos de Mysql
    //Extrae cada dato
    
$fotos explode('*'$assoc['fotos']);
    
print_r($fotos//Imprime el array para que compruebes

Eso es un ejemplo, tu debes adaptarlo a tus necesidades
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: imagenes, hosts
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 11:28.