Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/03/2018, 10:52
stevens82
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 12 años, 6 meses
Puntos: 4
Respuesta: ejecutar una funcion dentro de otra

Creo que esto me funciona pero tengo ciertas dudas con parte del coidgo

Código PHP:
public function registrarEncuesta($titulo$cargo$departamento$provincia$distrito$fecha_enc$id_candidato)
    {
        try {
            
$this->_db->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
            
$this->_db->beginTransaction(); // iniciar transacción
            
$a $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();
            if (!
$a) {
                throw new 
Exception("ERROR AL INGRESAR LOS DATOS");
            } else {
                for (
$i=0$i<count($id_candidato); $i++) {
                    
$b $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
                
));
                }
            }
            if(
$a && $b) {
                
$this->_db->commit();
            } else {
                
$this->_db->rollBack();
            }
            
// echo 'Datos insertados correctamente';
        
} catch (PDOException $e) {
            
// si ocurre un error hacemos rollback para anular todos los insert
            
$this->_db->rollBack();
            throw 
$e;
            
// echo $e->getMessage();
        
}
    }