Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Transaccion con PHP

Estas en el tema de Transaccion con PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola buenas, os escribo porque tengo una duda y no soy capaz de ponerle ningun remedio. os explico: Tengo un formulario en html, que se ...
  #1 (permalink)  
Antiguo 30/11/2010, 05:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 0
Transaccion con PHP

Hola buenas, os escribo porque tengo una duda y no soy capaz de ponerle ningun remedio. os explico:

Tengo un formulario en html, que se procesa con los metodos de distintas clases que tengo creadas. Asi:

Código PHP:
Ver original
  1. include_once("classes/Proyecto.php");
  2.  
  3. $p1= new Proyecto($_POST['titulo_proyecto'],$_POST['referencia'],$_POST['agencia'],$_POST['a_comienzo'],$_POST['a_final'],$_POST['comentarios'],$_POST['financing']);
  4. $m1=null;
  5. if(!$p1->existeProyecto()){
  6.     $p1->insertar();
  7.     if($_POST['participantes']!=null){
  8.         foreach ($_POST['participantes'] as $value) {
  9.             $m1 = AccesoBD::getPersona($value);
  10.             $m1->relacionar_proyecto($p1);
  11.         }
  12.     }
  13. $coordinador=  AccesoBD::getMiembroById($_POST['coordinador']);
  14. $p1->setCoordinador($coordinador);
  15. }

Despues cada metodo realiza un insert o un select o lo que tenga que realizar, pero claro, cada uno desde su clase. Entonces lo que pasa es que no se como hacer para que o se realicen correctamente todas las funciones o que no se realice ninguna. No se como hacer un rollback o un commit con metodos en php. No se si me explico. Toda sugerencia es admitida, gracias!!!!
  #2 (permalink)  
Antiguo 30/11/2010, 05:27
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Transaccion con PHP

Un ejemplo a grandes rasgos con PDO seria algo asi:

Código PHP:
Ver original
  1. $pdo->beginTransaction();
  2. try{
  3.    $pdo->query(...);
  4.    $pdo->query(...);
  5.    $pdo->query(...);
  6.    $pdo->commit();
  7. }catch(PDOException $e){
  8.    $pdo->rollback();
  9.    //Handle Exception
  10. }

Salu2.
  #3 (permalink)  
Antiguo 30/11/2010, 07:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Transaccion con PHP

Estoy mirando lo de PDO, pero no encuentro ningun sitio donde ponga como instalarlo o como descargarlo. Es muy dificil??? Hay algun tutorial o algo? Gracias :)
  #4 (permalink)  
Antiguo 30/11/2010, 08:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Transaccion con PHP

Viene activado por defecto en php > 5.1.0, igual te paso el link, para checkear create un phpinfo.

Salu2
  #5 (permalink)  
Antiguo 30/11/2010, 09:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Transaccion con PHP

Muchas gracias, ya he podido empezar a usarlo, estoy aprendiendolo un poco.

Pero esto no se como puede solucionar mi problema. Lo que tu me has explicado son querys en SQL, pero en mi caso lo que pasa es que llamo a metodos que tienen dentro sus sentencias sql. Entonces no se podría hacer esto:

Código PHP:
Ver original
  1. $p1= new Proyecto($_POST['titulo_proyecto'],$_POST['referencia'],$_POST['agencia'],$_POST['a_comienzo'],$_POST['a_final'],$_POST['comentarios'],$_POST['financing']);
  2. $pdo->beginTransaction();
  3. try{
  4. if(!$p1->existeProyecto()){
  5.     $p1->insertar();
  6.     if($_POST['participantes']!=null){
  7.         foreach ($_POST['participantes'] as $value) {
  8.             $m1 = AccesoBD::getPersona($value);
  9.             $m1->relacionar_proyecto($p1);
  10.         }
  11.     }
  12. $coordinador=  AccesoBD::getMiembroById($_POST['coordinador']);
  13. $p1->setCoordinador($coordinador);
  14. $pdo->commit();
  15. }catch(PDOException $e){
  16.    $pdo->rollback();
  17.    //Handle Exception
  18. }


Que deberia haceR? Quizas pasar la conexion como parámetro?
  #6 (permalink)  
Antiguo 30/11/2010, 09:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Transaccion con PHP

Lo de PDO era para que tuvieras la idea de como era, en tu caso deberias create las funciones de transacciones en tu DBAL, te paso un link que tiene las funciones basicas.
  #7 (permalink)  
Antiguo 30/11/2010, 12:37
 
Fecha de Ingreso: marzo-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Transaccion con PHP

Ahhhh.... vale, ya lo entendi, esta muy bien el ejemplo que me pasaste, muchas gracias!

Etiquetas: php, transacciones
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




La zona horaria es GMT -6. Ahora son las 20:18.