Thief13
2007-02-23 06:43:45 UTC
Bonjour bonjour !
Tout le monde est levé ? bon, j'ai le truc un peut compliqué du
moment... (enfin, pour moi)
Voilà, je gere une arboresence via mysql qui est linéaire, donc, j'avais
le choix entre des fonctions récursive bien lourde, et des intervalles,
et j'ai opté pour ces derniers.
Cependant, lorsque l'on fait une insertion dans la base avec les
intervalles, ils faut faire 3 requette, et bien sur, elles doivent
toutes passer, ou aucune... donc, transactionnel.
Je sais comment faire du transactionnel avec MySQL, ce n'est pas le
probleme (enfin je croix). Non, ma question est sur php : comment, en
php, faire passer une requette transactionnel ? j'ai bien essayer
quelque chose (dont voici le code ci dessous), mais ça n'a pas l'aire de
marcher...
livre de référence à un paragraphe sur le transactionnel, qui dit qu'il
vaux mieux l'utiliser pour les requettes interdépendantes (sans
blagues), mais sans dire comment, j'ai bien trouvé une fonction sur le
net (qui se trouve aussi dans les commentaire de la doc php) mais je
n'arrive pas à la faire fonctionner, et je ne sais pas si elle convien à
mon cas... sinon, impossible de trouver des ressource là dessus, c'est
dingue quand meme ! personne n'a besoin du transactionnel ou quoi ?
(précision : je suis sous MySQL5, et j'utilise des tables InnoDB qui
sont normalement compatible avec le transactionnel...)
Tout le monde est levé ? bon, j'ai le truc un peut compliqué du
moment... (enfin, pour moi)
Voilà, je gere une arboresence via mysql qui est linéaire, donc, j'avais
le choix entre des fonctions récursive bien lourde, et des intervalles,
et j'ai opté pour ces derniers.
Cependant, lorsque l'on fait une insertion dans la base avec les
intervalles, ils faut faire 3 requette, et bien sur, elles doivent
toutes passer, ou aucune... donc, transactionnel.
Je sais comment faire du transactionnel avec MySQL, ce n'est pas le
probleme (enfin je croix). Non, ma question est sur php : comment, en
php, faire passer une requette transactionnel ? j'ai bien essayer
quelque chose (dont voici le code ci dessous), mais ça n'a pas l'aire de
marcher...
if (mysql_query("BEGIN", $db_connexion)) {
if (mysql_query($sql_intervalle_droit, $db_connexion) || mysql_query($sql_intervalle_gauche, $db_connexion) || mysql_query($sql, $db_connexion)) {
if (mysql_query("COMMIT", $db_connexion)) {
// On redirige vers la page nouvellement cree
header("location: ".CONF_URL_ADMIN."edition/index.php?page=".mysql_insert_id());
exit();
} else {
exit('Erreur l\'application des modifications, ne faite plus aucunes modifications sur le site, contacter l\'administrateur et communiquez lui le numero : '.$id_page_securise.' afin de verifier la base');
}
} else if (mysql_query("ROLLBACK", $db_connexion)) {
exit('Erreur dans l\'une des requettes, aucune modification n\'a ete applique');
} else {
exit('Erreur dans l\'une des requettes et dans le ROLLBACK, ne faite plus aucunes modifications sur le site, contacter l\'administrateur et communiquez lui le numero : '.$id_page_securise.' afin de verifier la base');
}
}
Merci d'avance pour vis lanternes car là, je bloque completement. Monif (mysql_query($sql_intervalle_droit, $db_connexion) || mysql_query($sql_intervalle_gauche, $db_connexion) || mysql_query($sql, $db_connexion)) {
if (mysql_query("COMMIT", $db_connexion)) {
// On redirige vers la page nouvellement cree
header("location: ".CONF_URL_ADMIN."edition/index.php?page=".mysql_insert_id());
exit();
} else {
exit('Erreur l\'application des modifications, ne faite plus aucunes modifications sur le site, contacter l\'administrateur et communiquez lui le numero : '.$id_page_securise.' afin de verifier la base');
}
} else if (mysql_query("ROLLBACK", $db_connexion)) {
exit('Erreur dans l\'une des requettes, aucune modification n\'a ete applique');
} else {
exit('Erreur dans l\'une des requettes et dans le ROLLBACK, ne faite plus aucunes modifications sur le site, contacter l\'administrateur et communiquez lui le numero : '.$id_page_securise.' afin de verifier la base');
}
}
livre de référence à un paragraphe sur le transactionnel, qui dit qu'il
vaux mieux l'utiliser pour les requettes interdépendantes (sans
blagues), mais sans dire comment, j'ai bien trouvé une fonction sur le
net (qui se trouve aussi dans les commentaire de la doc php) mais je
n'arrive pas à la faire fonctionner, et je ne sais pas si elle convien à
mon cas... sinon, impossible de trouver des ressource là dessus, c'est
dingue quand meme ! personne n'a besoin du transactionnel ou quoi ?
(précision : je suis sous MySQL5, et j'utilise des tables InnoDB qui
sont normalement compatible avec le transactionnel...)