PHP - Transacciones con PDO

 
Vista:

Transacciones con PDO

Publicado por Sharloth (1 intervención) el 18/08/2017 00:09:08
Buenas tardes, espero que me puedan ayudar con el siguiente inconveniente.... estoy pogramando en php y pdo

estoy realizando un mini progrma de inscripcion escolar... tengo un formulario de inscripcion en el cual solcitan datos de estudiante de los padres. tengo programada la clase persona, clase estudiante, clase familiares... a parte tengo un documento php donde recibo los datos del html...

mi problema es el siguiente.... en donde recibo los datos hago los llamados a los insertar de cada clase que valla necesitando, los tengo en un try chatch pero si hay algun inconveniente por ejemplo en el tercer insert se va al cath pero no me realiza el rollback asi que me almacena a medias los datos, les dejare un ejemplo de mis codigo para que me ayuden

mis clases estan programadas de la siguiente manere

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
require_once('classpersona.php');
 
class Familiar extends Persona {
 
public function __construct($ced, $nom, $ape, $dir, $sex, $tlf, $tlf2, $lnac, $fnac, $nac, $ec,
		$na, $pro, $ocu, $lt, $tlft, $c) {
		parent::__construct($ced, $nom, $ape, $dir, $sex, $tlf, $tlf2, $lnac, $fnac, $nac, $ec);
		$this->na = $na;
		$this->profesion = $pro;
		$this->ocupacion = $ocu;
		$this->ltrab = $lt;
		$this->tlftrab = $tlft;
		$this->correo = $c;
	}
 
	public function Insertar() {
		$na = $this->na;
		$pro = $this->profesion;
		$ocu = $this->ocupacion;
		$lugart = $this->ltrab;
		$tlftrab = $this->tlftrab;
		$correo = $this->correo;
 
		$connect = conexion();
		$idPer = parent::Insertar(); //llamamos al insertar persona 
		$consulta= $connect->prepare("INSERT INTO familiar (idper, na, prof, ocu, ltr, tlftrab, correo, estatus) VALUES (?,?,?,?,?,?,?,?)");
		$consulta->execute(array($idPer, $na, $pro, $ocu, $lugart, $tlftrab, $correo, 'A'));
		$id = $connect->lastInsertId();
		return $id;
	}
 
	public function Actualizar($idp, $idf) {
		$na = $this->na;
		$pro = $this->profesion;
		$ocu = $this->ocupacion;
		$lugart = $this->ltrab;
		$tlftrab = $this->tlftrab;
		$correo = $this->correo;
 
		$connect = conexion();
		parent::Actualizar($idp);
		$consulta= $connect->prepare("UPDATE familiar set na = ?, prof = ?, ocu = ?, ltr = ?,
		tlftrab = ?, correo = ? WHERE idpersona = ? AND idfamiliar = ?");
		#$connect->beginTransaction();
		$consulta->execute(array($na, $pro, $ocu, $lugart, $tlftrab, $correo, $idp, $idf));
		#$connect->commit();
	}
}
 
}
?>

y prte del codigo donde hago el llamado de los metodos de las clases esta de esta forma

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
try {
	#---------------- INSERTAR AL  ESTUDIANTE -------------------------
	$Cpersona = new Persona($ced, $nomb, $ape, '', $sex, '', '', '', $fn, '', '');
	$cedEs = $Cpersona->CedEsProv();
	$Cestudiante = new Estudiante($cedEs, $nomb, $ape, $dir, $sex, '', '', $ln, $fn, $nac, '',
		'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
		'', '', '', '', '', '', '', '', '', '',	'', '', '', '', '', '', '', '', '', '', '', '',
		'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
	$idE = $Cestudiante->Insertar('P');
	$Cturno = new Turno('', $turnodesea);
	$idt = $Cturno->Insertar('');
	$Clapso = new LapsoA('','','');
	$idl = $Clapso->MaxID();
	$Cseccion = new Seccion('');
	$idsec= $Cseccion->Insertar($idl, $idt, 'N');
	$Csecest = new SeccionEstudiante($idsec, $idE);
	$Csecest->Insertar();
 
	if (!isset($_SESSION['idFRe'])) {
		$Cfamiliar = new Familiar($ced, $nombR, $apeR, $dirR, $sexR, $tlf, $otlf, $lnR, $fnR, $nacR, $ec, '', '', $ocu, '', '', '');
		$idF = $Cfamiliar->Insertar();
		$Cparentesco = new Parentesco($paren);
		$idParen = $Cparentesco->Insertar();
		$Cestfam = new EstudianteFamiliar($idE, $idF, 'S', 'S');
		$Cestfam->Insertar($idParen);
 
	}
 
	else {
		$idp = $_SESSION['idPRe'];
		$idf = $_SESSION['idFRe'];
		$Cfamiliar = new Familiar($ced, $nombR, $apeR, $dirR, $sexR, $tlf, $otlf, $lnR, $fnR, $nacR, $ec, '', '', $ocu, '', '', '');
		$Cfamiliar->Actualizar($idp, $idf);
		$Cparentesco = new Parentesco($paren);
		$idpa = $Cparentesco->Insertar();
		$Cestfam = new EstudianteFamiliar($idE, $idf, 'S', 'S');
		$Cestfam->Insertar($idpa);
		$connect->commit();
	}
} catch (Exception $e) {
	$connect->rollBack();
	echo $e->getMessage();
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder