From aa8523e3182af4838fe90fb723fd8f910ae2ed75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Philippe=20Gu=C3=A9rard?= Date: Fri, 30 Dec 2011 04:16:41 +0100 Subject: [PATCH] Rewritten to use transactions --- admin/index.php | 37 +++++++++++++++++++++++++---------- adminstuds.php | 25 +++++++++++++++++++++-- scripts/nettoyage_sondage.php | 33 +++++++++++++++++++++++-------- 3 files changed, 75 insertions(+), 20 deletions(-) diff --git a/admin/index.php b/admin/index.php index dd9eeb0..6891c87 100644 --- a/admin/index.php +++ b/admin/index.php @@ -86,19 +86,36 @@ while($dsondage = $sondage->FetchNextObject(false)) { if (issetAndNoEmpty('confirmesuppression'.$i) === true) { // On inclut la routine de suppression $date=date('H:i:s d/m/Y'); - - $req = 'DELETE FROM sujet_studs WHERE id_sondage = ' . $connect->Param('id_sondage') . '; ' . - 'DELETE FROM user_studs WHERE id_sondage = ' . $connect->Param('id_sondage') . '; ' . - 'DELETE FROM comments WHERE id_sondage = ' . $connect->Param('id_sondage') . '; ' . - 'DELETE FROM sondage WHERE id_sondage = ' . $connect->Param('id_sondage') ; - + + $connect->StartTrans(); + + $req = 'DELETE FROM sondage WHERE id_sondage = ' . $connect->Param('id_sondage') ; $sql = $connect->Prepare($req); $connect->Execute($sql, array($dsondage->id_sondage)); - - // ecriture des traces dans le fichier de logs - error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'logs_studs.txt'); + + $req = 'DELETE FROM sujet_studs WHERE id_sondage = ' . $connect->Param('id_sondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($dsondage->id_sondage)); + + $req = 'DELETE FROM user_studs WHERE id_sondage = ' . $connect->Param('id_sondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($dsondage->id_sondage)); + + $req = 'DELETE FROM comments WHERE id_sondage = ' . $connect->Param('id_sondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($dsondage->id_sondage)); + + if (! $connect->HasFailedTrans() ) { + + // ecriture des traces dans le fichier de logs + error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'logs_studs.txt'); + + } + + $connect->CompleteTrans(); + } - + $i++; } diff --git a/adminstuds.php b/adminstuds.php index 808dd2d..a374b4c 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -319,8 +319,29 @@ if (isset($_POST["confirmesuppression"]) || isset($_POST["confirmesuppression_x" 'DELETE FROM comments WHERE id_sondage = ' . $connect->Param('numsondage') . '; ' . 'DELETE FROM sondage WHERE id_sondage = ' . $connect->Param('numsondage') ; - $sql = $connect->Prepare($sql); - if ($connect->Execute($sql, array($numsondage))) { + $connect->StartTrans(); + + $req = 'DELETE FROM sondage WHERE id_sondage = ' . $connect->Param('numsondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($numsondage)); + + $req = 'DELETE FROM sujet_studs WHERE id_sondage = ' . $connect->Param('numsondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($numsondage)); + + $req = 'DELETE FROM user_studs WHERE id_sondage = ' . $connect->Param('numsondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($numsondage)); + + $req = 'DELETE FROM comments WHERE id_sondage = ' . $connect->Param('numsondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($numsondage)); + + $suppression_OK = ! $connect->HasFailedTrans() ; + $connect->CompleteTrans(); + + + if ( $suppression_OK ) { // on ecrit dans le fichier de logs la suppression du sondage error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, 'admin/logs_studs.txt'); diff --git a/scripts/nettoyage_sondage.php b/scripts/nettoyage_sondage.php index 5bd387d..665ac58 100644 --- a/scripts/nettoyage_sondage.php +++ b/scripts/nettoyage_sondage.php @@ -49,15 +49,32 @@ $sondage=$connect->Execute("select * from sondage"); while ($dsondage=$sondage->FetchNextObject(false)) { if ($date_courante > strtotime($dsondage->date_fin)) { //destruction des données dans la base - $req = 'DELETE FROM sujet_studs WHERE id_sondage = ' . $connect->Param('id_sondage') . '; ' . - 'DELETE FROM user_studs WHERE id_sondage = ' . $connect->Param('id_sondage') . '; ' . - 'DELETE FROM comments WHERE id_sondage = ' . $connect->Param('id_sondage') . '; ' . - 'DELETE FROM sondage WHERE id_sondage = ' . $connect->Param('id_sondage') ; - + $connect->StartTrans(); + + $req = 'DELETE FROM sondage WHERE id_sondage = ' . $connect->Param('id_sondage') ; $sql = $connect->Prepare($req); $connect->Execute($sql, array($dsondage->id_sondage)); - - // ecriture des traces dans le fichier de logs - error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, '../admin/logs_studs.txt'); + + $req = 'DELETE FROM sujet_studs WHERE id_sondage = ' . $connect->Param('id_sondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($dsondage->id_sondage)); + + $req = 'DELETE FROM user_studs WHERE id_sondage = ' . $connect->Param('id_sondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($dsondage->id_sondage)); + + $req = 'DELETE FROM comments WHERE id_sondage = ' . $connect->Param('id_sondage') ; + $sql = $connect->Prepare($req); + $connect->Execute($sql, array($dsondage->id_sondage)); + + if ( ! $connect->HasFailedTrans() ) { + + // ecriture des traces dans le fichier de logs + error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\n", 3, '../admin/logs_studs.txt'); + + } + + $connect->CompleteTrans(); + } }