Pour ceux qui ont une application PHP / MySql, il permet de sauvegarder d'un clic sa base ou de la restaurer avec une sauvegarde antérieure. La gestion des noms est automatique même s'il y a plusieurs bases à gérer. Une seule ligne de code php/html est à rajouter au menu de chaque application avec retour dans
l'application à la fin. Les tables avec contraintes de clés externes sont gérées. Ce gestionnaire est composé de petits modules, qu'il suffit de placer dans le répertoire courant. Ils peuvent être utilisés indépendamment.
****************
La présentation des fichiers de sauvegarde est calquée sur celle des
exportations de PhpMyAdmin. Avec une différence : l'importation de PhpMyAdmin impose d'effacer manuellement toutes les tables concernées, ce qui est contraire au principe d'automatisme. Le palliatif est de procéder à la sauvegarde de la base actuelle avant toute restauration puis à la suppression des tables.
L'importation d'une sauvegarde peut se faire alors en toute sérénité.
****************
Pour faciliter le choix du fichier à restaurer, un petit éditeur a été ajouté. Tout fichier .sql est accepté. La liste de ces fichiers avec leur date de création est également affichée. Ils doivent être dans le répertoire courant.
****************
Pour gérer plusieurs bases, il a été choisi d'associer quelques lignes de code à chaque base (des aiguilleurs). Chaque aiguilleur assure la connexion à sa base (sous forme d'une instance PDO). Il lance alors le gestionnaire de sauvegarde dont le formulaire aura pour destinataire l'aiguilleur, pour un retour à l'expéditeur. (redirection). Les aiguilleurs se distinguent simplement par le
nom de la base associée : aiguilleur_unebase.php
****************
Petit bonus : si la base venait à être corrompue, provoquant une erreur fatale, en lançant simplement l'aiguilleur on peut restaurer la dernière sauvegarde et se retrouver directement dans l'application réparée ! Le contenu de la base, tel qu'il était avant réparation, peut alors être étudié dans l'éditeur.
****************
Mais avant tout test, procéder à une (dernière ?) exportation / VÉRIFICATION de l'exportation. Ne jamais oublier la puissance de la loi de Murphi ! Dont ma traduction serait : la chose la plus improbable doit être considérée comme avérée dès lors qu'elle est néfaste...
****************
EN PRATIQUE,
Si une des bases est 'base1' et que son menu est géré par une liste déroulante, il faut rajouter une option au menu avec la ligne :
...................................................................
...................................................................
Créer le 'fichier aiguilleur_base1.php' (en changeant 'base1' et 'mon_pass') avec pour contenu le code : (le fichier est dans le .zip)
-------------------------------------------------------------------
if(isset($_POST['sauve'])&& $_POST['restaure']==''&& $_POST['sauve']=='non') {
header("Location: mon_accueil.php"); exit; } // <== modifier ici
$base = 'base1'; // <== modifier ici (nom d'une de mes bases)
$bdd = new PDO('mysql:host=localhost';dbname='.$base, 'root', 'pass');
include("gestionnaire.php"); // La cible du formulaire est cet aiguilleur.
?>
-------------------------------------------------------------------
Si le menu est géré par des boutons "radio", il faut ajouter la ligne :
...................................................................
...................................................................
en remplaçant les "xx" par : "aiguilleur_base1.php", et les "yy" par : Gestion des sauvegardes En supposant que la première ligne php de "lecture" du menu soit :
-------------------------------------------------------------------
if(isset($_POST['menu'])) {
header("Location: ".$_POST['menu']); exit; }
-------------------------------------------------------------------
****************
Et rajouter dans le répertoire de travail les fichiers :
aiguilleur_base1.php (à modifier)
sauvegarde.php
restauration.php
gestionnaire.php
pied_de_page.php
feuille.css pour quelques couleurs.
****************
Côté sécurité, un formulaire utilisé est aussitôt invalidé : si on revient en arrière dans la navigation, même si on relance le formulaire, l'action sera sans effet. On ne verra plus : "les informations précédemment transmises par Firefox doivent être renvoyées." ! (au risques et périls de l'utilisateur !).
****************
W7 / WAMPSERVER2.1 / phpMyAdmin / Apache / MySQL5.5.8
****************