hola a todos estimados, espero que tengan un buen dia, pasaba por aca a pedir su ayudita, resulta que tengo un formulario donde hago un insert a una bd mysql, en este form tengo que cargar 5 imagenes por registro, guardar las rutas en la bd y mover las imagenes aun directorio. Con el siguiente codigo me funciona sin problmas el mover y hacer el insert:
Código PHP:
if(isset($_POST['enviar']))
{
if(isset($_FILES['fotosavisos']))
{
$rutas = array('', ''); // Inicializas con dos rutas vacías
//Subida de Archivos
foreach($_FILES['fotosavisos']['tmp_name'] as $key => $nombresTemporal)
{ //Nombre del Arreglo generado con el input fotosavisos
$nombres=$_FILES['fotosavisos']['name'][$key];
//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;
//Titulo del Aviso
$titulo_aviso = htmlspecialchars($_POST["titulo_aviso"]);
$categoria_aviso = htmlspecialchars($_POST["categoria_aviso"]);
$tipo_aviso = htmlspecialchars($_POST["tipo_aviso"]);
$comuna = htmlspecialchars($_POST["comuna"]);
$aviso_completo = htmlspecialchars($_POST["aviso_completo"]);
$valor_producto = htmlspecialchars($_POST["valor_producto"]);
$fecha_publicacion = date('Y-m-d', strtotime($_POST['fecha_publicacion']));
$nombre = htmlspecialchars($_POST["nombre"]);
$telefono_celular = htmlspecialchars($_POST["telefono_celular"]);
$telefono_fijo = htmlspecialchars($_POST["telefono_fijo"]);
$direccion = htmlspecialchars($_POST["direccion"]);
//Movemos los Archivos al Servidor
move_uploaded_file($nombresTemporal,$rutaFinal);
// Actualizas la ruta correspondiente para este archivo
$rutas[$key] = $rutaFinal;
}//foreach
//Insercion a la Base de Datos
$modelo= new Operaciones();
$modelo->insertInto="publicaraviso";
$modelo->insertColumns='titulo_aviso, categoria_aviso, tipo_aviso, comuna, aviso_completo, valor_producto, fecha_publicacion, nombre,
telefono_celular, telefono_fijo,direccion,img1, img2, img3, img4, img5'; //, img_1, img_2
$modelo->insertValues="'$titulo_aviso','$categoria_aviso','$tipo_aviso','$comuna','$aviso_completo','$valor_producto','$fecha_publicacion',
'$nombre','$telefono_celular','$telefono_fijo','$direccion','$rutas[0]','$rutas[1]','$rutas[2]','$rutas[3]','$rutas[4]'";
$modelo->Insertar();
$mensaje= $modelo->mensaje;
}
}
lo que tengo que hacer es lo mismo pero usando este sistema de consulta, que es el que implemente finalmente para mi proyecto, y es el que utilizo para update, delete, etc:
Código PHP:
//Inserción de Datos en Base de Datos
function insertarAvisos(){
try{
$query ="INSERT INTO avisos (titulo_aviso,categoria_aviso,tipo_aviso,comuna,aviso_completo,valor_producto,nombre,telefono_celular,telefono_fijo,correo_electronico,direccion,img1,img2,img3,img4,img5)"; //,img1,img2,img3,img4,img5
$query .="VALUES(:titulo_aviso,:categoria_aviso,:tipo_aviso,:comuna,:aviso_completo,:valor_producto,:nombre,:telefono_celular,:telefono_fijo,:correo_electronico,:direccion,:rutas[0],:rutas[1],:rutas[2],:rutas[3],:rutas[4])"; //,:rutas[0],:rutas[1],:rutas[2],:rutas[3],:rutas[4]
//Preparamos la consulta
$stmt= $this->con->prepare($query);
$stmt->bindParam(':titulo_aviso', $_POST['titulo_aviso'],PDO::PARAM_STR);
$stmt->bindParam(':categoria_aviso', $_POST['categoria_aviso'] ,PDO::PARAM_STR);
$stmt->bindParam(':tipo_aviso', $_POST['tipo_aviso'] ,PDO::PARAM_STR);
$stmt->bindParam(':comuna', $_POST['comuna'],PDO::PARAM_STR);
$stmt->bindParam(':aviso_completo', $_POST['aviso_completo'],PDO::PARAM_STR);
$stmt->bindParam(':valor_producto', $_POST['valor_producto']);
$stmt->bindParam(':nombre', $_POST['nombre'] ,PDO::PARAM_STR);
$stmt->bindParam(':telefono_celular', $_POST['telefono_celular']);
$stmt->bindParam(':telefono_fijo', $_POST['telefono_fijo']);
$stmt->bindParam(':correo_electronico', $_POST['correo_electronico'] ,PDO::PARAM_STR);
$stmt->bindParam(':direccion', $_POST['direccion'] ,PDO::PARAM_STR);
//Aca declaro las variables para las imagenes,
$stmt->bindParam(':img1', $this->rutas[0]);
$stmt->bindParam(':img2', $this->rutas[1]);
$stmt->bindParam(':img3', $this->rutas[2]);
$stmt->bindParam(':img4', $this->rutas[3]);
$stmt->bindParam(':img5', $this->rutas[4]);
//Ejecutamos la Consulta
$stmt->execute();
echo "Aviso Insertado con Exito en la Base de Datos";
}catch(PDOException $e){
echo $e->errorInfo;
}
}//funcion InsertarAvisos
mi pregunta es, sin hacer uso de imagenes hago perfecto el insert, pero no se como implementar el codigo que tengo del upload de imagenes a este formato de consulta, sobre todo teniendo en cuenta como declaro la recepcion de datos desde el post, y que las imagenes se almacenan en un array, o sea, como puedo implementar el primer codigo en este nuevo tipo de insert, de esta manera me sale el siguiente error:
Código PHP:
Warning: move_uploaded_file(imagenes_avisos/empresa computacion.jpg): failed to open stream: No such file or directory in C:xampphtdocsavisoscrudinsert.php on line 38
Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\phpD558.tmp' to 'imagenes_avisos/empresa computacion.jpg' in C:xampphtdocsavisoscrudinsert.php on line 38
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:xampphtdocsavisosIncfunciones.php on line 92
Aviso Insertado con Exito en la Base de Datos
Warning: move_uploaded_file(imagenes_avisos/tecnologia.jpg): failed to open stream: No such file or directory in C:xampphtdocsavisoscrudinsert.php on line 38
Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\phpD578.tmp' to 'imagenes_avisos/tecnologia.jpg' in C:xampphtdocsavisoscrudinsert.php on line 38
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:xampphtdocsavisosIncfunciones.php on line 92
Aviso Insertado con Exito en la Base de Datos //No hace insert, pero da por hecho que si
Saludos a todos, agradesco desde ya su tiempo