Foros del Web » Programando para Internet » PHP »

Rollback

Estas en el tema de Rollback en el foro de PHP en Foros del Web. Hola buenas tardes, tengo que hacer una aplicacion para pa carrera y os cuento mi mi problema y ustedes me explicais a ver que puedo ...
  #1 (permalink)  
Antiguo 20/06/2010, 09:50
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Rollback

Hola buenas tardes, tengo que hacer una aplicacion para pa carrera y os cuento mi mi problema y ustedes me explicais a ver que puedo hacer vale??

A ver basicamente la funcion es la siguiente, voy a recibir un xml donde se va a dividir en 3 partes:
1.me van a venir una etiqueta con el nombre de jugadores,
2.otra etiqueta para nombre de clubes
3.y por ultimo una etiqueta para asociar jugadores a clubes.

En mi codigo principal, poseo 3 funciones (una para insertar jugadores en la BD, otra para insertar clubes y otra para insertar las asociaciones).

El funcionamiento del codigo es el siguiente:
1.En primer lugar vamos leyendo las etiquetas de los jugadores y llamamos a la funcion de introducir jugadores y lo vamos metiendo en la base de datos.
2.A continuacion lo mismo para los clubes y las asociaciones.

Bien, lo que pretendo hacer, y es donde me pierdo, es que si por ejemplo el proceso falla en el paso de las asociaciones, hacer un rollback y elimiar todo lo ingresado anteriormente.

No se si me he explicado bien.

PD: uso php y mysql.



Un saludo y gracias!!
  #2 (permalink)  
Antiguo 20/06/2010, 11:31
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Rollback

Tema delicado, te aconsejo leer un poco sobre transacciones en mysql con php.

http://213.149.242.201/php/articulo/...transacciones/
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 21/06/2010, 00:52
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Rollback

Buenos días,

Muchisimas gracias pr tu respuesta, pero despues de leerme 3 veces el dicumento que me has indicado, sigo sin saber si puedo hacer lo que intento o si es imposible.


Un saludo.
  #4 (permalink)  
Antiguo 21/06/2010, 01:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Rollback

Cita:
Iniciado por novatillo_php Ver Mensaje
Buenos días,

Muchisimas gracias pr tu respuesta, pero despues de leerme 3 veces el dicumento que me has indicado, sigo sin saber si puedo hacer lo que intento o si es imposible.


Un saludo.


pues claro que se puede hacer, si no no existirían dichas instrucciones...

lo curioso es que después de leer tres veces dicho enlace no has notado esto:
Cita:
Los pasos para usar transacciones en MySQL son:
* Iniciar una transacción con el uso de la sentencia BEGIN.
* Actualizar, insertar o eliminar registros en la base de datos.
* Si se quieren los cambios a la base de datos, completar la transacción con el uso de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT los cambios hechos por las consultas serán permanentes.
* Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK para cancelar los cambios que han sido realizados por las consultas que han sido ejecutadas hasta el momento.
...y sigo preguntándome, ¿que tiene que ver esto con el foro de PHP??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/06/2010, 01:57
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Rollback

Cita:
Iniciado por pateketrueke Ver Mensaje


pues claro que se puede hacer, si no no existirían dichas instrucciones...

lo curioso es que después de leer tres veces dicho enlace no has notado esto:


...y sigo preguntándome, ¿que tiene que ver esto con el foro de PHP??
Buenas!!Muchisimas gracias por tu respuesta!!

La verdad que lo he metido en el foro de php, porque estoy haciendo una aplicacion en php y pensaba que este sería su lugar correcto.

Tengo una duda mas, yo estoy lanzando las sentencias con la instruccion de php mysql_query(). Como haria haria el rollback y el commit, de esta manera???

mysql_query("commit")


Una cosa mas, tendria que desactivar el autocommit de mysql verdad??sabriais decirme cual es la instaruccion de php que lo hace??


Un saludo!!
  #6 (permalink)  
Antiguo 21/06/2010, 02:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Rollback

bueno, por lo primero... tienes razón, una consulta debe ser ejecutada con mysql_query() y por supuesto que BEGIN/COMMIT/ROLLBACK son consultas!!

lo segundo, según entiendo... no se puede hacer desde PHP, debes editar la configuración de MySQL manualmente y reiniciar el servidor... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/06/2010, 02:17
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Mensaje Respuesta: Rollback

Cita:
Iniciado por pateketrueke Ver Mensaje
bueno, por lo primero... tienes razón, una consulta debe ser ejecutada con mysql_query() y por supuesto que BEGIN/COMMIT/ROLLBACK son consultas!!

lo segundo, según entiendo... no se puede hacer desde PHP, debes editar la configuración de MySQL manualmente y reiniciar el servidor... (:
Muchas gracias de nuevo, entonces una manera correcta de hacerlo seria la siguiente??

mysql_query("BEGIN;");
$consulta=...

if($consulta){
mysql_query("commit");
}else{
mysql_query("ROLLBACK");
}


Un saludo!!
  #8 (permalink)  
Antiguo 21/06/2010, 02:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Rollback

Cita:
Iniciado por novatillo_php Ver Mensaje
Muchas gracias de nuevo, entonces una manera correcta de hacerlo seria la siguiente??

mysql_query("BEGIN;");
$consulta=...

if($consulta){
mysql_query("commit");
}else{
mysql_query("ROLLBACK");
}


Un saludo!!
a ver... después de haber leído tres veces este enlace aún no te ha quedado claro??

con respecto a tu "manera" de hacer las consultas no es correcta... al menos no en el sentido de comparar simplemente $consulta, pues... son varios factores que debes tener en cuenta... pero bueno, ¿eso es aparte no?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/06/2010, 02:24
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Rollback

Cita:
Iniciado por pateketrueke Ver Mensaje
a ver... después de haber leído tres veces [url=http://213.149.242.201/php/articulo/mysql_transacciones/]este enlace[/url] aún no te ha quedado claro??

con respecto a tu "manera" de hacer las consultas no es correcta... al menos no en el sentido de comparar simplemente $consulta, pues... son varios factores que debes tener en cuenta... pero bueno, ¿eso es aparte no?
Pues no aun no me ha quedado claro, sino no estaria aqui dando la lata....xD

A ver lo comentado anteriormente ya no tiene ni nada que ver con mi caso particular, lo que me gustaria saber es si para hacer una prueba de rollback esa seria una manera correcta.
  #10 (permalink)  
Antiguo 21/06/2010, 08:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Rollback

Cita:
Iniciado por novatillo_php Ver Mensaje
Pues no aun no me ha quedado claro, sino no estaria aqui dando la lata....xD

A ver lo comentado anteriormente ya no tiene ni nada que ver con mi caso particular, lo que me gustaria saber es si para hacer una prueba de rollback esa seria una manera correcta.
una prueba correcta implica mas que consultas, ya que des-hacerlas o no, no depende de la consulta en si... como te digo: son muchos factores, y esos los impones tu... ;)

ahora, con respecto a la sintaxis entonces sería algo así:
Código PHP:
mysql_query('BEGIN;');
mysql_query('DELETE * FROM tabla');

if (
/* todo salio perfecto */mysql_query('COMMIT;');
else 
mysql_query('ROLLBACK;'); 
como puedes observar, en realidad es muy sencillo... aunque "todo salió perfecto" dependería realmente de la lógica que le quieras dar a dicha cuestión...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 22/06/2010, 03:23
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Rollback

Ok todo solucionado


Muchas gracias!!

Etiquetas: rollback
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 11:01.