en mi controlador tengo esto
Código PHP:
Ver original
public funcion nuevo() { //codigo ... $this->_encuestas->registrarEncuesta( $this->getPostParam('titulo'), $this->getPostParam('cargo'), $this->getPostParam('departamento'), $this->getPostParam('provincia'), $this->getPostParam('distrito'), $fecha_enc); // var_dump($num); for ($i=0; $i<$num; $i++) { $this->_encuestas->insertOpcionesEncuesta( $_POST['candidato'][$i] ); } }
y en el modelo:
Código PHP:
Ver original
public function registrarEncuesta($titulo, $cargo, $departamento, $provincia, $distrito, $fecha_enc) { $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') . "')" ':titulo' => $titulo, ':cargo' => $cargo, ':departamento' => $departamento, ':provincia' => $provincia, ':distrito' => $distrito, ':fecha_enc' => $fecha_enc) ); public function insertOpcionesEncuesta($id_candidato){ $sql = "SELECT MAX(id) AS id FROM encuestas LIMIT 1"; $query = $this->_db->prepare($sql); $query->execute(); $row = $query->fetch(); $sql = "INSERT INTO opciones (id, id_encuesta, id_candidato) VALUES (null, :id_encuesta, :id_candidato)"; $statement = $this->_db->prepare($sql); ':id_encuesta' => $row['id'], ':id_candidato' => $id_candidato )); }
con esto me funciona perfecto pero que pasa si no registra la primera funcion la segfunda me ingresaria con el id del ultimo registro de la primera tabla ya registrada antes, por lo que necesito saber como ejecutar la segunda consulta si y solo si la primera se ejecuto correctamente, esto meterlo talvez en una TRANSACCION, espero alguien me peuda dar una ayuda al respecto.