Bouton pour la mise à jour d'une BD

Signaler
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005
-
 rudolph974 -
Bonjour,
Je suis actuellement en train de faire un site intranet, mais j'ai un petit problème!
Je travaille actuellement sur un serveur local. Une fois que j'ai fais des modifs au niveau de la BD, il faut que je l'envoi par mail à une personne connectée sur un autre serveur local auquel je n'ai pas accès. Il faut donc que par un simple bouton je puisse exporter la BD sans passer par PhpMyAdmin (et également importer la BD envoyée)!

Le plus simple aurait été d'avoir un serveur commun, ou un site intranet, mais ce n'est pas possible!
J'utilise EasyPhp pour faire tourner mon site!
Voilà je ne sais pas si c'est très clair, mais bon!?
Le problème est que je ne vois pas trop comment faire sans passer par PhpMyAdmin!
donc si vous pouviez m'aider!!

merci d'avance
sofi

24 réponses

Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hello,

tu execute via exec 'mysqldump' et ensuite tu recuperes le fichier et tu l'envoies par email par exemple! Et voila, en un script tu mail l'export de ta bd a ton collegue.

Enjoy, ++
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

j'ai essayé ceci, mais ca ne marche pas!le pire c'est qu'il n'y a pas de message d'erreur!

exec("mysqldump --opt ao > appel_offre.sql");

Tu pourrais expliciter un petit peu plus ce que tu disais?
merci d'avance!
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hello,



Pour mysqldump, je l'utilise comme ca:



mysqldump -u username nomdelabaseasauver -p password > nomdelasauvegarde.sql




Ca crée donc dans le dossier courant un fichier nomdelasauvegarde.sql
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
petite correction: ce n'est pas -p password, mais -ppassword (ne me demande pas pourquoi :))
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Hehe... finalement, curiosité aidant, en me basant sur http://phpcs.com/code.aspx?id=26501, j'ai essayé ça:



<?php



function mail_attachement($to , $sujet , $message , $fichier , $typemime , $nom , $reply , $from){

$limite = "_parties_".md5(uniqid (rand()));



$mail_mime = "Date: ".date("l j F Y, G:i")."\n";

$mail_mime .= "MIME-Version: 1.0\n";

$mail_mime .= "Content-Type: multipart/mixed;\n";

$mail_mime .= " boundary="----=$limite"\n\n";



//Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML

$texte = "This is a multi-part message in MIME format.\n";

$texte .= "Ceci est un message est au format MIME.\n";

$texte .= "------=$limite\n";

$texte .= "Content-Type: text/plain; charset="iso-8859-1"\n";

$texte .= "Content-Transfer-Encoding: 7bit\n\n";

$texte .= $message;

$texte .= "\n\n";



//le fichier

$attachement = "------=$limite\n";

$attachement .= "Content-Type: $typemime; name="$nom"\n";

$attachement .= "Content-Transfer-Encoding: base64\n";

$attachement .= "Content-Disposition: attachment; filename="$nom"\n\n";



$fd = fopen( $fichier, "r" );

$contenu = fread( $fd, filesize( $fichier ) );

fclose( $fd );

$attachement .= chunk_split(base64_encode($contenu));



$attachement .= "\n\n\n------=$limite\n";

mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom: $from\n".$mail_mime);

}



$text = 'Salut, voici le matos que tu voulais';

$fichier = 'db.sql';

$typemime = 'application/text';

$nom = 'sauvegarde_db.sql';

$reply = 'mlk7934@hotmail.com';

$from = 'mlk7934@hotmail.com';



passthru('mysqldump -u username dbname -ppasswd > db.sql');



mail_attachement('mlk7934@hotmail.com' , 'Sauvegarde DB' , $message , $fichier , $typemime , $nom , $reply , $from);



?>



username est le nom d'utilisateur (ne pas oublier le -u), dbname le nom
de la base que tu veux sauver et passwd (ne pas oublier le -p) est le
mot de passe pour mysql. Oublie pas qu'il faut pouvoir ecrire, donc
etre dans un dossier avec un chmod en conséquence (je sais jamais
lequel, je mets toujours 777, oops!)

Ca marche sans problème, à toi de dégrossir le code



Enjoy, ++
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Merci beaucoup j'essaie de suite!
a+
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Bon, j'ai juste essayé de faire ceci

passthru('mysqldump -u root ao_champagne > .././db.sql');

mais déjà ça ne marche pas!il créé bien le fichier db.sql mais il est vide!
déjà hier, le fichier était bien créé mais vide!
Tu vois quel peut etre le problème??moi pas du tout!je me suis pris la tête hier avec!
sur mon ordi je n'ai pas les droits administrateurs, mais pour PhpMyAdmin je suis pas sûre que ca change grand chose?!

Je vais continuer à chercher!Si tu vois me problème dis moi!
merci beaucoup
a+
sofi
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
pis le mot de passe, t'en as pas pour acceder a ta db? passthru('mysqldump -u root ao_champagne -ptrucchose > .././db.sql'); ... c'est pas une question d'etre admin ou pas... sinon essaie d'abord en console (putty par exple) de faire 'mysqldump -u root ao_champagne -ptrucchose > .././db.sql'. Si la ca marche pas c'est qu'il y a un probleme ;)

Enjoy, ++
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

ben non j'ai pas de mot de passe pour accéder à ma base!
je suis dans une boîte de BTP, donc il n'y a que moi qui touche à l'info!
j'ai essayé de mettre ca sur mon site perso sous free, ou la il y a un mot de passe, mais ca ne marche pas non plus!la il ne créé meme pas de fichier db.sql!
je vais essayer de rajouter un mot de passe à ma base en local, ca va peut etre marcher!
je te tiens au courant!
a+
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
ok,

Je te conseille tout de meme de voir si l'export en console fonctionne...

a+
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Bon, tu remarquera que je n'y connais pas grand chose, j'ai trouver ceci, mais je sais pas si ca peut etre ca qui bloque?

$cfg['Export']['asfile'] = FALSE;
$cfg['Export']['onserver'] = FALSE;
$cfg['Export']['onserver_overwrite'] = FALSE;
$cfg['Export']['remember_file_template'] = TRUE;

$cfg['Export']['csv_columns'] = FALSE;
$cfg['Export']['csv_null'] = 'NULL';
$cfg['Export']['csv_separator'] = ';';
$cfg['Export']['csv_enclosed'] = '"';
$cfg['Export']['csv_escaped'] = '\\';
$cfg['Export']['csv_terminated'] = 'AUTO';
$cfg['Export']['excel_columns'] = FALSE;
$cfg['Export']['excel_null'] = 'NULL';

$cfg['Export']['latex_structure'] = TRUE;
$cfg['Export']['latex_data'] = TRUE;
$cfg['Export']['latex_columns'] = TRUE;
$cfg['Export']['latex_relation'] = TRUE;
$cfg['Export']['latex_comments'] = TRUE;
$cfg['Export']['latex_mime'] = TRUE;
$cfg['Export']['latex_null'] = '\textit{NULL}';

$cfg['Export']['sql_structure'] = TRUE;
$cfg['Export']['sql_data'] = TRUE;
$cfg['Export']['sql_drop_database'] = FALSE;
$cfg['Export']['sql_drop_table'] = FALSE;
$cfg['Export']['sql_auto_increment'] = TRUE;
$cfg['Export']['sql_backquotes'] = TRUE;
$cfg['Export']['sql_relation'] = FALSE;
$cfg['Export']['sql_columns'] = FALSE;
$cfg['Export']['sql_extended'] = FALSE;
$cfg['Export']['sql_comments'] = FALSE;
$cfg['Export']['sql_mime'] = FALSE;

Qu'en penses tu il y a quelque chose à changer?
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Franchement, en fouillant un peu google, tu trouves ca:

<DT>
$cfg['Export'] array : In this array are defined default parameters for export, names of items are similar to texts seen on export page, so you can easily identify what they mean.

Et a priori ce que tu me montres la c'est la configuration par defaut dans phpmyadmin... Ceci dit, je persiste et signe avec ma question: t'as essayé en console?</DT>
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Excuse moi j'ai un peu de mal (voire bcp), mais qu'est ce que tu appelles en console?
Avec PhpMyAdmin, quand j'exporte ca marche bien je le fais tous les jours pour avoir une sauvegarde de ma base, mais je pense pas que ce soit ca dont tu parles ??
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Effectivement, c'est pas de ca dont je parle

Soit. essaie ca: tu crees un dossier ou ca te fait plaisir avec comme droits 703, tu y mets un fichier truc.php avec comme contenu
<?php passthru('mysqldump -u root ao_champagne > db.sql'); ?> et tu executes ce fichier. Ensuite tu regardes dans ton dossier (apres un petit refresh) si le fichier db.sql a ete cree.

Je me rends compte maintenant qu'il y avait une erreur potentielle dans ta commande 'mysqldump -u root ao_champagne > .././db.sql': si .././ n'est pas au moins en chmod 703, ca ne peut pas marcher.

Ensuite, ce que j'appelle en console, c'est par exemple avec un soft comme putty, en ligne de commande quoi, pas dans un navigateur.

Good luck, ++
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Le truc c'est que je suis sous Windows et pas sous Unix!tu fais comment pour mettre les droits à 703?
Mais a priori en fait j'ai le contrôle total sur ce répertoire et tout ce qu'il contient!
Donc j'ai réessayé de que tu a dit, et ca me créé bien le fichier mais attention....il est vide!??

a+
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
Moi je suis sous windows aussi, mais pour bidouiller mes fichiers, j'utilise Filezilla... un tour sur google avec comme recherches chmod et windows devrait t'aider ;o)

Ceci dit, si cela cree un fichier, c'est que tu as les droits. Maintenant, pourquoi il est vide, c'est une autre question! Peut etre qu'en mettant -uroot a la place de -u root... faut regarder sur google! la, je sais plus moi :o) Il semblerait qu'un fichier est vide apres mysqldump si il y a une erreur dans la commande mysqldump. C'est la qu'il faut checker selon moi.

Good luck et tiens moi au courant, ++
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Merci beaucoup de ton aide, je vais voir tout ca et je te tiendrai au courant!
bon ap si tu pars manger!!
a+
sofi :0)
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

J'ai peut etre quelque chose de neuf!
a priori, php ne reconnait pas mysldump! il doit y avoir une extension précise pour utiliser mysqldump??
a+
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
mysqldump n'est pas une commande php mais mysql... tu commences a melanger, hehe...

passthru te permet justement d'executer cette commande comme si tu etais en console. Pour te donner un exemple, bien que man ne soit pas reconnu par php, <?php passthru('man mysqldump'); ?> te donnera le help de mysqldump (non formate) et l'affichera dans ton navigateur.

Ton probleme est dans ta commande mysqldump. Si le fichier cree est vide, c'est qu'il y a une faute dans 'mysqldump -uroot ao_champagne > db.sql'. Peut etre cette histoire de password... ou alors ton serveur est sous windows (brr, ca me fait froid dans le dos rien qu'en y pensant) et peut etre, je dis bien peut etre, mysqldump ne s'utilise pas de la meme maniere... je sais plus la, desole!
Messages postés
14
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
12 juillet 2005

Bon, encore une question bête mais qui vas me permettre d'apprendre quelque chose : en quoi le fait que le serveur soit sous Window serait brr??
Explique moi que je me cultive!

a+