Estimados, un saludo cordial a todos, mi pregunta es, tengo que validar un insert, en realidad es asi: tengo un script que me inserta noticias, y que a su vez permite cargar hasta 5 imagenes, para luego moverlas a una carpeta del servidor y almacenar su ruta en la bd...Me funcionaba bien hasta que medi cuenta de algunos detalles, me puse a hacer validacion del tipo de archivo, renombrar para no sobreescribir imagenes, etc, y me doycuenta que independiente de que cargue o no imagenes me inserta el nombre de la carpeta destino en los campos de imagenes (cosa que no deberia porque no estoy cargando imagenes), probe con este codigo:
Código PHP:
if(isset($_POST['enviar'])){
//Validamos que no sean ams de 5 imagenes las que se cargaron
if(!sizeof($_FILES['fotosavisos']['name']) > 5){
echo 'ha cargado mas de 5 fotos';
}else{
//llamo la objeto insertar
}
y consigo hacer bien el insert, solo datos, sin anda en las rutas de imagenes, ya que no cargue archivo...
Lo que necesito ahcer es:
1- insertar solo datos si no se cargaron imagenes (dejando los campos de imagenes como null)
2.- si se cargaron imagenes, insertar todo (imagenes y noticias)
Intento con este codigo final:
Código PHP:
if(isset($_POST['enviar'])){
//Validamos que no sean ams de 5 imagenes las que se cargaron
if(!sizeof($_FILES['fotosavisos']['name']) > 5){
echo 'ha cargado mas de 5 fotos';
}else{
//Aca es donde deberia colocar el codigo que se encarga de sbuir las imagenes?
if(!empty($_FILES['fotosavisos']['name'])){
$rutas = array('', ''); // Inicializas con dos rutas vacías
//Subida de Archivos
foreach($_FILES['fotosavisos']['tmp_name'] as $key => $nombresTemporal)
{
//asignamos un nombre unico para que no se repita si el nombre de la imagen ya existe en el servidor
//$nombreUnico= md5( time());
//Nombre del Arreglo generado con el input fotosavisos
$nombres=$_FILES['fotosavisos']['name'][$key];
//Obtenemos la extension del archivo
//$nombreUnico=substr(md5($nombres),0 , 10);
//$nombres= preg_replace('#[^a-z.0-9]#i', '', $nombres);
//Nombre Temporal de la Imagen (Generada por el servidor)
$nombresTemporal=$_FILES['fotosavisos']['tmp_name'][$key];
//Tamaño de la Imagen
$tamaño=$_FILES['fotosavisos']['size'][$key];
//Tipo de Imagen
$tipo=$_FILES['fotosavisos']['type'][$key];
//Ruta en Servidor
$rutaFinal="../imagenes_avisos/".$nombres;
$rutaFinalSQL="imagenes_avisos/".$nombres; //VALIDAR QUE ESTA RUTA EXISTA
//Movemos los Archivos al Servidor
move_uploaded_file($nombresTemporal,$rutaFinal);
// Actualizas la ruta correspondiente para este archivo
$rutas[$key] = $rutaFinalSQL;
}//foreach
}
}
//Insertamos los Datos (Aun si no se han cargado imagenes )
try{
$obj->insertarAvisos($rutas);
//print_r($_POST);
// print_r($_FILES);
}catch(PDOException $e){
echo $e;
}
} //if post
pero hace el insert, y no mueve la imagen, ademas de que con este codigo, si no cargo imagen, igual inserta el nombre de la carpeta destino en los campos ruta...
Saludos a todos, agradesco su tiempo