Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/03/2018, 08:31
stevens82
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: ejecutar una funcion dentro de otra

Hola bueno con esto me funciona no se si podria optimizarlo o mejorar el codigo

controlador:
Código PHP:
$fecha_enc date('Y-m-d'strtotime($_POST['fecha_enc']));
             for (
$i=0$i<count($_POST['candidato']); $i++) {
                
$candidato[] = $_POST['candidato'][$i];
            }

            
$this->_encuestas->registrarEncuesta(
            
$this->getPostParam('titulo'),
            
$this->getPostParam('cargo'),
            
$this->getPostParam('departamento'),
            
$this->getPostParam('provincia'),
            
$this->getPostParam('distrito'),
            
$fecha_enc,
            
$candidato); 
Modelo:

Código PHP:
public function registrarEncuesta($titulo$cargo$departamento$provincia$distrito$fecha_enc$id_candidato)
    {
        try {
            
$this->_db->beginTransaction(); // iniciar transacción
            // tabla 1
            
$this->_db->prepare("INSERT INTO encuestas (id, titulo, id_cargo, id_pais, id_departamento, id_provincia, id_distrito, fecha_encuesta, fecha_registro, usuario_registrador) VALUES (null, :titulo, :cargo, 1, :departamento, :provincia, :distrito, :fecha_enc, now(), '" Session::get('id_usuario') . "')"
                
)->execute(array(
                    
':titulo'           => $titulo,
                    
':cargo'            => $cargo,
                    
':departamento'     => $departamento,
                    
':provincia'        => $provincia,
                    
':distrito'         => $distrito,
                    
':fecha_enc'        => $fecha_enc)
                );
            
$lastReciboId $this->_db->lastInsertId();
            for (
$i=0$i<count($id_candidato); $i++) {
                
$sql "INSERT INTO opciones (id, id_encuesta, id_candidato) VALUES (null, :id_encuesta, :id_candidato)";
                
$statement $this->_db->prepare($sql);
                
$statement->execute(array(
                    
':id_candidato'  => $id_candidato[$i],
                    
':id_encuesta'   => $lastReciboId
                
));
                }

            
$this->_db->commit();
            echo 
'Datos insertados';
        } catch (
PDOException $e) {
            
// si ocurre un error hacemos rollback para anular todos los insert
            
$this->_db->rollBack();
            echo 
$e->getMessage();
        }
    }