Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO parametros en consulta Insert PDO

Estas en el tema de parametros en consulta Insert PDO en el foro de PHP en Foros del Web. 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 ...

  #1 (permalink)  
Antiguo 30/07/2014, 20:17
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
parametros en consulta Insert PDO

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:
Warningmove_uploaded_file(imagenes_avisos/empresa computacion.jpg): failed to open streamNo 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 numberparameter 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 streamNo 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 numberparameter 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
  #2 (permalink)  
Antiguo 30/07/2014, 20:58
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

vos te diste cuenta que C:xampphtdocsavisoscrudinsert.php es la ruta absoluta sin barras?
deberia ser asi:
C:/xampp/htdocs/avisos/crud/insert.php
supiendo que es asi tu ruta
  #3 (permalink)  
Antiguo 30/07/2014, 21:24
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

Cita:
Iniciado por Patriarka Ver Mensaje
vos te diste cuenta que C:xampphtdocsavisoscrudinsert.php es la ruta absoluta sin barras?
deberia ser asi:
C:/xampp/htdocs/avisos/crud/insert.php
supiendo que es asi tu ruta
de echo me salta asi:
Código PHP:
Warningmove_uploaded_file(imagenes_avisos/tecnologia.jpg): failed to open streamNo such file or directory in C:xampphtdocsavisoscrudinsert.php on line 38 
no se porque no se ven las los backslash, pero me sale como me decis

Última edición por nimaki25; 30/07/2014 a las 21:26 Razón: me di cuenta de que no se ve bien el codigo
  #4 (permalink)  
Antiguo 31/07/2014, 08:18
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

bueno ese script que hiciste no tiene futuro,
lo primero que tenes que hacer es que se copien los archivos al servidor:

Código PHP:
Ver original
  1. copy($origen, $destino)

y me gustaria saber que imprime

Código PHP:
Ver original
  1. <?
  2. echo '<pre>';
  3. print_r($this->rutas);
  4. echo '</pre>';
  5. ?>
  #5 (permalink)  
Antiguo 31/07/2014, 10:41
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

gracias, hice lo que me comentas, ahora pasa los archivos a la carpeta, hasta ahi bien, pero al hacer el instert me da el siguente errror:
Código PHP:
WarningPDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter numberparameter was not defined in C:xampphtdocsavisosIncfunciones.php on line 107
Aviso Insertado con Exito en la Base de Datos 
los parametros coinciden, no me esta faltando ninguno:
Código PHP:
function insertarAvisos(){
   
            try{
                
$query  ="INSERT INTO avisos (titulo_aviso,categoria_aviso,tipo_aviso,comuna,aviso_completo,valor_producto,fecha_publicacion,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,:fecha_publicacion,: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']);
                
//Fecha de Publicacion
                
$stmt->bindParam(':fecha_publicacion',date('Y-m-d'time()),PDO::PARAM_STR);
                
$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);

                
$stmt->bindParam(':img1'$this->rutas[0],PDO::PARAM_STR); //, $this->rutas[0]
                
$stmt->bindParam(':img2'$this->rutas[1],PDO::PARAM_STR);
                
$stmt->bindParam(':img3'$this->rutas[2],PDO::PARAM_STR);
                
$stmt->bindParam(':img4'$this->rutas[3],PDO::PARAM_STR);
                
$stmt->bindParam(':img5'$this->rutas[4],PDO::PARAM_STR);

                
//Ejecutamos la Consulta
                
$stmt->execute();
                echo 
"Aviso Insertado con Exito en la Base de Datos";

                }catch(
PDOException $e){
                       echo 
$e->errorInfo;
                }
  
        }
//funcion InsertarAvisos 
no doy con el error, para mi esta en los parametros de las imagenes:
$stmt->bindParam(':img5', $this->rutas[4],PDO::PARAM_STR); pero no se cual puede ser el error
  #6 (permalink)  
Antiguo 31/07/2014, 14:38
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

fijate que te dice que el error es en la linea 107. qué tiene esta linea?


sacale esto a todas las lineas PDO::PARAM_STR , estas forzando un tipo de dato.
no le pases este parametro para ver si te funciona asi, yo uso pdo y no lo uso
  #7 (permalink)  
Antiguo 31/07/2014, 16:53
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

gracias de nuevo Patriarka, cambie en la consulta, dejando los parametros originales y me hace el insert, pero no me toma la ruta de las imagenes, o sea, mueve los archivos perfecto, me inserta todos los demas campos sin problema pero en las imagenes: null, null, null
  #8 (permalink)  
Antiguo 31/07/2014, 18:11
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

hice un print r, de $_POST, y noto que no esta llegando nada de las imagenes:
Array ( [titulo_aviso] => asasas [categoria_aviso] => Venta [tipo_aviso] => gratis [comuna] => [aviso_completo] => asasas [valor_producto] => [nombre] => [telefono_celular] => [telefono_fijo] => [correo_electronico] => [direccion] => [codigo_seguridad] => [cod_aviso] => [enviar] => Publicar mi Aviso!! ) (no escribi nada en el form)
  #9 (permalink)  
Antiguo 31/07/2014, 19:27
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

hace print_r($_FILES)
  #10 (permalink)  
Antiguo 31/07/2014, 20:13
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

hice print _r a files, me arroja:
Array ( [fotosavisos] => Array ( [name] => Array ( [0] => empresa computacion.jpg [1] => tecnologia.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg ) [tmp_name] => Array ( [0] => C:\xampp\tmp\phpD98C.tmp [1] => C:\xampp\tmp\phpD99D.tmp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 11421 [1] => 14236 ) ) ) , la verdad no se me ocurre que mas, de la otra fomrame funcionaba, pero con esta forma de hacer insert nada,,,
  #11 (permalink)  
Antiguo 31/07/2014, 20:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

una duda que me asalta, si hago un print_r a $_POST, me arroja todo menos los campos parametros, o sea no los estaria trayendo cierto?
  #12 (permalink)  
Antiguo 31/07/2014, 21:24
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

mostrame la parte del codigo cuando copias los archivos

en algun lugar se debe hacer esto:
$this->rutas[0] = <ruta del archivo>;

te esta faltando eso
  #13 (permalink)  
Antiguo 31/07/2014, 21:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

gracias de nuevo, se que soy bastant rompe pero me tiene sacado este tema ejeje, mira en un archivo funciones (donde tengo la conexion y eso), uso esta funcion, la cual me hace insert de todos los campos pero en las imagenes no trabaja (me deja todo null):
Código PHP:
function insertarAvisos(){
            
$this->rutas=array();
          
            try{
                
$query  ="INSERT INTO avisos (titulo_aviso,categoria_aviso,tipo_aviso,comuna,aviso_completo,valor_producto,fecha_publicacion,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,:fecha_publicacion,: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']);
                
//Fecha de Publicacion
                
$stmt->bindParam(':fecha_publicacion',date('Y-m-d'time()),PDO::PARAM_STR);
                
$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);

                
$stmt->bindParam(':img1'$this->rutas[0]); //, $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 
y el archivo que procesa (el que llamo desde el formulario) es este:
Código PHP:
require_once '../Inc/funciones.php';

$obj = new Avisos();

/*$obj->insertarAvisos();*/


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;

            
//Movemos los Archivos al Servidor
            
move_uploaded_file($nombresTemporal,$rutaFinal);
              
            
// Actualizas la ruta correspondiente para este archivo
            
$rutas[$key] = $rutaFinal;

        }
//foreach  
        
                    
            
//Llamamos a la funcion Insertar $obj->insertarAvisos();
        
    
try{
            
print_r($_POST);
    }catch(
PDOException $e){
        echo 
$e;
    }
        
    }



  #14 (permalink)  
Antiguo 31/07/2014, 21:48
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

PERFECTO,
pasan 2 cosas, cuando inicializas un array hacelo vacio del todo:
$rutas = array('', ''); // Inicializas con dos rutas vacías
por
$rutas = array(); // Inicializa

cuando comienza la funcion:

function insertarAvisos(){
// $this->rutas=array(); //esto hace que rutas re-inicialice en vacio, comenta esta linea!
  #15 (permalink)  
Antiguo 31/07/2014, 22:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

gracias nuevamente, mira:

pongo $rutas = array('', ''); en funciones y en el script que procesa, sigue igual, siguiendo lo que me comentas, tendria que pasar algun otro valor en los parametros:
$stmt->bindParam(':img1', $this->rutas[0]); //, $this->rutas[0]
$stmt->bindParam(':img2', $this->rutas[1]);
$stmt->bindParam(':img3', $this->rutas[2]);
  #16 (permalink)  
Antiguo 31/07/2014, 23:10
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

no entendiste,

esta linea eliminala

function insertarAvisos(){
$this->rutas=array(); //ELIMINAR!!!!!!/
  #17 (permalink)  
Antiguo 01/08/2014, 13:13
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

nada capo, le elimine la linea que me comentas y nada
  #18 (permalink)  
Antiguo 01/08/2014, 14:33
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

y nunca te las va a insertar por tenes mal esto:

:rutas[0],:rutas[1],:rutas[2],:rutas[3],:rutas[4]


tiene que ser como vos mismo lo definiste:
Código PHP:
Ver original
  1. <?
  2. :img1,:img2,:img3,:img4,:img5
  3.  
  4. $stmt->bindParam(':img1', $this->rutas[0]); //, $this->rutas[0]
  5. $stmt->bindParam(':img2', $this->rutas[1]);
  6. $stmt->bindParam(':img3', $this->rutas[2]);
  7. $stmt->bindParam(':img4', $this->rutas[3]);
  8. $stmt->bindParam(':img5', $this->rutas[4]);
  9.  
  10. ?>
  #19 (permalink)  
Antiguo 01/08/2014, 16:23
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

inserta todo bien hasta el momento de guardar la ruta de las imagenes, copia las imagenes a la carpeta perfecto, pero en la bd la ruta que deberia quedar almacenada lo deja todo en null
  #20 (permalink)  
Antiguo 01/08/2014, 20:21
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

ahora intente colocando $_files asi:
Código PHP:
function insertarAvisos(){
         
           try{
                
$query  ="INSERT INTO avisos (titulo_aviso,categoria_aviso,tipo_aviso,comuna,aviso_completo,valor_producto,fecha_publicacion,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,:fecha_publicacion,:nombre,:telefono_celular,:telefono_fijo,:correo_electronico,:direccion,:img1,:img2,:img3,:img4,:img5)"//,: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']);
                
//Fecha de Publicacion
                
$stmt->bindParam(':fecha_publicacion',date('Y-m-d'time()),PDO::PARAM_STR);
                
$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);

                
$stmt->bindParam(':img1' ,$_FILES['fotosavisos'], $this->rutas[0]); //, $this->rutas[0]
                
$stmt->bindParam(':img2' $_FILES['fotosavisos'],$this->rutas[1]);
                
$stmt->bindParam(':img3' $_FILES['fotosavisos'],$this->rutas[2]);
                
$stmt->bindParam(':img4' $_FILES['fotosavisos'],$this->rutas[3]);
                
$stmt->bindParam(':img5' ,$_FILES['fotosavisos'], $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 
quedando el script que procesa asi:
Código PHP:
$obj = new Avisos();

/*$obj->insertarAvisos();*/


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;

            
//Movemos los Archivos al Servidor
            
move_uploaded_file($nombresTemporal,$rutaFinal);
              
            
// Actualizas la ruta correspondiente para este archivo
            
$rutas[$key] = $rutaFinal;

        }
//foreach  
        
                    
            
//Llamamos a la funcion Insertar $obj->insertarAvisos();
        
    
try{
        
        
$obj->insertarAvisos();
            
//print_r($_POST);
    
}catch(PDOException $e){
        echo 
$e;
    }
        
    } 
al ejecutarlo me da este error:
Notice: Undefined property: Avisos::$rutas in C:\xampp\htdocs\avisos\Inc\funciones.php on line 99

Notice: Undefined property: Avisos::$rutas in C:\xampp\htdocs\avisos\Inc\funciones.php on line 100

Notice: Undefined property: Avisos::$rutas in C:\xampp\htdocs\avisos\Inc\funciones.php on line 101

Notice: Undefined property: Avisos::$rutas in C:\xampp\htdocs\avisos\Inc\funciones.php on line 102

Notice: Undefined property: Avisos::$rutas in C:\xampp\htdocs\avisos\Inc\funciones.php on line 103

Notice: Array to string conversion in C:\xampp\htdocs\avisos\Inc\funciones.php on line 106

Notice: Array to string conversion in C:\xampp\htdocs\avisos\Inc\funciones.php on line 106

Notice: Array to string conversion in C:\xampp\htdocs\avisos\Inc\funciones.php on line 106

Notice: Array to string conversion in C:\xampp\htdocs\avisos\Inc\funciones.php on line 106

Notice: Array to string conversion in C:\xampp\htdocs\avisos\Inc\funciones.php on line 106
Aviso Insertado con Exito en la Base de Datos
  #21 (permalink)  
Antiguo 02/08/2014, 08:42
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

hola, pero no tenes que inventar cosas.

hace esto:

function insertarAvisos(){
echo '<pre>';
print_r($this->rutas);
echo '</pre>';
  #22 (permalink)  
Antiguo 02/08/2014, 14:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

gracias nuevamente, ejeje me puse a probar a ver si salia algo pero nada, no se porque me da que la aprte que me esta jodiendo es la de bindParam(img...), probe como me comentaste, quedando asi el codigo:
Código PHP:
 //Inserción de Datos en Base de Datos
        
function insertarAvisos(){
         echo 
'<pre>';
                
print_r($this->rutas);
                echo 
'</pre>';
           try{
                
$query  ="INSERT INTO avisos (titulo_aviso,categoria_aviso,tipo_aviso,comuna,aviso_completo,valor_producto,fecha_publicacion,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,:fecha_publicacion,:nombre,:telefono_celular,:telefono_fijo,:correo_electronico,:direccion,:img1,:img2,:img3,:img4,:img5)"//,: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']);
                
//Fecha de Publicacion
                
$stmt->bindParam(':fecha_publicacion',date('Y-m-d'time()),PDO::PARAM_STR);
                
$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);

                
$stmt->bindParam(':img1'$this->rutas[0]); //, $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 
me sale lo siguiente:

Notice: Undefined property: Avisos::$rutas in C:\xampp\htdocs\avisos\Inc\funciones.php on line 80


Catchable fatal error: Object of class Avisos could not be converted to string in C:\xampp\htdocs\avisos\Inc\funciones.php on line 102
  #23 (permalink)  
Antiguo 02/08/2014, 15:23
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

bueno yo me voy imaginando como tenes vos el codigo,
lo de bindparam ya esta resuelto, sino te daria error

lo que da error ahora es que $rutas no existe
entonces cuando llamas

$obj->insertarAvisos($rutas);

y en la fucion:

Código HTML:
Ver original
  1. function insertarAvisos($rutas=array()){
  2.          echo '<pre>';
  3.                 print_r($rutas);
  4.                 echo '</pre>';
  5.            try{
  6.                 $query  ="INSERT INTO avisos (titulo_aviso,categoria_aviso,tipo_aviso,comuna,aviso_completo,valor_producto,fecha_publicacion,nombre,telefono_celular,telefono_fijo,correo_electronico,direccion,img1,img2,img3,img4,img5)";
  7.                 $query .="VALUES(:titulo_aviso,:categoria_aviso,:tipo_aviso,:comuna,:aviso_completo,:valor_producto,:fecha_publicacion,:nombre,:telefono_celular,:telefono_fijo,:correo_electronico,:direccion,:img1,:img2,:img3,:img4,:img5)";
  8.                 //Preparamos la consulta
  9.                 // lalalala
  10.  
  11.                 $stmt->bindParam(':img1', $rutas[0]);
  12.                 $stmt->bindParam(':img2', $rutas[1]);
  13.                 $stmt->bindParam(':img3' ,$rutas[2]);
  14.                 $stmt->bindParam(':img4' ,$rutas[3]);
  15.                 $stmt->bindParam(':img5' ,$rutas[4]);
  16.  
  17.  
  18.                 //Ejecutamos la Consulta
  19.                 $stmt->execute();
  20.                 echo "Aviso Insertado con Exito en la Base de Datos";
  21.                
  22.                
  23.                
  24.                 }catch(PDOException $e){
  25.                        echo $e->errorInfo;
  26.                 }
  27.  
  28.         }//funcion InsertarAvisos
  #24 (permalink)  
Antiguo 02/08/2014, 17:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

FUNCIONOOOOOOOOOOOOO ahora si, almacena todo, datos y las rutas de las imagenes, las copia a la carpeta y funciona impecable.....

te agradeszco muchisimo por la paciencia y la ayuda...ahora sin abusar pro supuesto, teniendo en consideracion que la ruta que me esta almacenando es asi:
Array
(
[0] => ../imagenes_avisos/empresa computacion.jpg
[1] => ../imagenes_avisos/tecnologia.jpg
)
al intentar recuperar las imagenes no me las muestra, me muestra la imagen con una x, antes lo recuperaba asi:
echo "<img src=".$fila['img5']." height='140px' width='200px' />";

la ruta que le especifico esta asi:
//Ruta en Servidor
$rutaFinal="../imagenes_avisos/".$nombres;

si le quito los dos puntos dejandolo asi:
//Ruta en Servidor
$rutaFinal="imagenes_avisos/".$nombres;
me da error y no mueve las imagenes...
  #25 (permalink)  
Antiguo 02/08/2014, 17:54
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

ok, como es la ruta absoluta de la carpeta /imagenes_avisos/ ??

esta carpeta es publica o esta fuera del DOCUMENT_ROOT ?
  #26 (permalink)  
Antiguo 02/08/2014, 18:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

la carpeta esta dentro del directorio, o sea mi estructura actual esta asi:
avisos (Principal), dentro de los cuales hay varias carpetas como:
--Admin
--Crud
--imagenes_avisos
.
.
.
.
  #27 (permalink)  
Antiguo 02/08/2014, 18:15
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

siempre tenes que guardar la ruta absoluta de la imagen



//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;
  #28 (permalink)  
Antiguo 02/08/2014, 20:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

con los cambios que me comentas, antes en la base de datos me insertaba los datos asi:
../imagenes_avisos/empresa computacion.jpg

ahora me los inserta asi:
/imagenes_avisos/empresa computacion.jpg

que es la forma correcta, y para mostrarlo hago la validacion asi:
if($av['img1'] == NULL){
echo "<img src='img/noimage.jpg' height='140px' width='180px' />";
}else{
echo "<div class='col-xs-6 col-sm-2'>";
echo "<a href='#' class='thumbnail' data-toggle='modal' data-target='#lightbox'>";
echo "<img src=".$av['img1']." height='140px' width='200px' />";
echo "</a>";
echo "</div>";
}

pero no me esta cargando las imagenes, si hago click derech sobre la imagen, me da esta ruta:
http://localhost/imagenes_avisos/WP_...SmartShoot.jpg, que estaria correcto tecnicamente
  #29 (permalink)  
Antiguo 03/08/2014, 05:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 8 años, 9 meses
Puntos: 288
Respuesta: parametros en consulta Insert PDO

bueno ahi solo te falta poner la url correcta y listo
  #30 (permalink)  
Antiguo 03/08/2014, 14:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 9 años
Puntos: 1
Respuesta: parametros en consulta Insert PDO

Resuelto, finalmente despues de horas, y antes de ver tu ultimo consejo, me dia cuenta del problema:

//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;

lo deje asi y ahora si, inserta, sube las imagenes a la carpeta destinada, y me muestra las imagenes y los registros.....

Muchas gracias estimado @Patriarka por toda tu ayuda, tu tiempo y la paciencia jejeje, espero pronto poder tener mas conocimeintos y ayudar como me han ayudado a mi hasta ahora en este proyecto que me pusieron en el trabajo....

Etiquetas: fecha, formulario, html, insert, mysql, parametros, pdo, registro, sql, variable
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:11.