Foros del Web » Programando para Internet » PHP »

Guardar varias veces los mismos datos e imágenes en BD

Estas en el tema de Guardar varias veces los mismos datos e imágenes en BD en el foro de PHP en Foros del Web. Buenas tardes, Tengo un formulario con el cual se puede insertar eventos en la pagina. Se inserta titulo, descripción... y además da la posibilidad de ...
  #1 (permalink)  
Antiguo 19/08/2015, 14:06
 
Fecha de Ingreso: agosto-2012
Ubicación: Almeria
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 0
Guardar varias veces los mismos datos e imágenes en BD

Buenas tardes,

Tengo un formulario con el cual se puede insertar eventos en la pagina. Se inserta titulo, descripción... y además da la posibilidad de subir imágenes.
Esos datos se insertan en la BD y genera una carpeta del evento con esas imágenes.

A este formulario le estoy añadiendo que si selecciona varios días, el evento se duplique como si fuera distintos eventos.

Ahora mismo lo está haciendo, genera el mismo evento por cada día seleccionado y genera una carpeta para cada evento.
El problema es que en la primera carpeta que genera si almacena la imagen pero en los demás días no. Os muestro el codigo,


El action del form llama a Insertar_bd.php.
En este fichero cuenta el numero de imagenes que se van a subir y comprueba si los ficheros tienen una extension adecuada.
Código:
//Almacena la ruta de los eventos en uploaddir
            $uploaddir = "img/contenido/".$ciudad."/disfrutaelejido/eventos/";
			//Almacena la ruta mas el nombre del fichero en uploadfile[posicion 0]
            $uploadfile[0] = $uploaddir . basename($_FILES['imagen']['name']);
			//Almacena el nombre del fichero en nomFichero[posicion 0]
            $nomFichero[0] = $_FILES['imagen']['name'];

            $numImagenes = 0;
			//Si el campo imagen no esta vacio y pesa mas de cero
             if(isset($_FILES['imagen']) && $_FILES['imagen']['size'] > 0)
                $numImagenes = 1;
            	//Compruebo si se han subido mas de 1 imagenes
            	if($nomFichero[0] != null)
            	{
					//Se inicia flag con true
                	$flag = true;
					//Recorre el for mirando si hay mas imagenes para almacenarlos en variables de array, hasta que flag sea false
                	for($i = 1 ; $flag == true;$i++)
                	{
                    	$aux = $i+1;
                    	if(isset($_FILES['imagen'.$aux]))
                    	{
							//Almacena la ruta de los eventos mas la imagen en uploadfile[posicion que le corresponda]
                        	$uploadfile[$i] = $uploaddir . basename($_FILES['imagen'.$aux]['name']);
							//Almacena el nombre del fichero en uploadfile[posicion que le corresponda]
                        	$nomFichero[$i] = $_FILES['imagen'.$aux]['name'];
							
							//Aumenta el contador de imagenes si no estaba vacio el nombre
                        	if($nomFichero[$i] != null)
                            	$numImagenes=$i+1;
							//Si no iguala el numero de imagenes al valor de $i y termina con el false	
                        	else
                        	{
                            	$numImagenes = $i;
                            	$flag=false;
                        	}
                    	}
                    	else
                        	$flag = false;
                		}
            		}
            		require_once(LIBRARY_PATH . "/funciones.php");  //para utilizar la función "extension()"

            		//Si la imagen es de la extension adecuada, lo guardo en la BD y en la carpeta. En caso contrario vuelvo al form
            		for($i=0;$i<$numImagenes;$i++)
            		{
                		$aux = "";
                		if($i == 0)
                    		$aux = "";
                		else
                    		$aux = $i+1;
                		if ((extension($nomFichero[$i]) == 'jpg' || extension($nomFichero[$i]) == 'JPG' || extension($nomFichero[$i]) == 'png' || extension($nomFichero[$i]) == 'PNG') && move_uploaded_file($_FILES['imagen'.$aux]['tmp_name'], $uploadfile[$i]))
                		{
                    		$imagenesValidas = true;
                		}
                		else
                		{
                    		$imagenesValidas = false;
                		}
            		}

            		if(isset($imagenesValidas) && $imagenesValidas == true)
            		{
                		require(LIBRARY_PATH . "/guardar_BD.php");

                  		echo "  <meta http-equiv='Refresh' content='0;URL=redirigir.php?dir=disfrutaelejido' />";
            		}
            		//No hay imágenes
            		else if($numImagenes==0)
            		{
                		$numImagenes = 1;
                		$nomFichero[0] = "sinImagen.png ,";
                		$sinImagen = true;
                		require(LIBRARY_PATH . "/guardar_BD.php");

                		echo "  <meta http-equiv='Refresh' content='0;URL=redirigir.php?dir=disfrutaelejido' />";
            		}
Al comprobar que esta todo bien, llama a guardar_BD. Aqui es donde inserta los datos en la BD, toma el numero de evento que acaba de generar y con este numero crea el directorio para las fotos y renombra las fotos con ese numero.
Por ultimo actualiza el nombre de las fotos en la BD con los nombres nuevos. (Todo este proceso de insercion lo hace varias veces por los dias seleccionados a traves del primer for)

Código:
//INSERTAR EVENTOS POR CADA DIA QUE HAYA SELECCIONADO
				for($contdia=1;$contdia<=5 && $_POST['dia'.$contdia.'']!=NULL;$contdia++){
                	$dia = $_POST['dia'.$contdia.''];
                	$mes = $_POST['mes'];
                	$año = $_POST['año'];
                	if(!isset($_POST['tipo3'])){
						$horas = $_POST['horas'];
						$minutos = $_POST['minutos'];
                        $fecha = "$año-$mes-$dia $horas:$minutos";
					}
                	else if($_POST['tipo3'] == true)
                	{
                        $hora = $_POST['hora'];
                        $fecha = "$año-$mes-$dia 00:00";
                	}

                	//Obtenemos el nombre de todas las imagenes que han sido cargadas.
                	$imagen = array();
                	for($i=0; $i < $numImagenes ; $i++)
                	{
						//En insertar_bd, nomFichero se ha rellenado, aqui se pasa a imagen
                    	$imagen[$i] = $nomFichero[$i];
                	}

                	$conexion = conectar();

					//Inserta la fiesta en la BD
                	mysql_query("INSERT INTO disfruta(NOMBRE_EVENTO,IMAGENES_EVENTO,FECHA_EVENTO,DESCRIPCION_EVENTO) VALUES('$titulo','$imagen','$fecha','$descripcion')");
                	//Toma el ultimo numero del evento que hay en la base de datos (cogera el ultimo que acaba de insertar)
					$result = mysql_query("SELECT MAX(ID_EVENTO) FROM disfrutaelejido ",$conexion);
                	$row = mysql_fetch_row($result);
							//Crea el directorio nuevo para el evento
                             mkdir("img/contenido/".$ciudad."/disfruta/eventos/".$row[0]."/");

                	if(!isset($sinImagen) || $sinImagen == false)
                	{
                    	//la imagen tendrá como nombre el ID del anuncio
                    	for($i=0; $i < $numImagenes ; $i++)
                    	{
                        	$imagen[$i] = renombrar($imagen[$i],$local."_".$row[0]."_".$i);
                        	rename($uploaddir.$nomFichero[$i],$uploaddir."/".$row[0]."/".$imagen[$i]);

                    }
                    $imagenBD = vectorToString($imagen);
                	}
                	else
                	{
                    	$imagenBD = $nomFichero[0];
                	}
                	mysql_query("UPDATE disfruta SET IMAGENES_EVENTO = '$imagenBD' WHERE ID_EVENTO = '$row[0]'");
                	mysql_close($conexion);
            	} //CIERRE DEL FOR QUE REVISA CUANTOS DIAS HAN SELECICONADO
No entiendo porque almacena los nombres de las fotos bien en la BD, genera las carpetas, pero solo almacena las fotos en el primer directorio.
Seguro que es una tontería pero no lo veo.

Etiquetas: bd, fecha, formulario, mysql, select, variable, veces
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 08:17.