Bouton pour la mise à jour d'une BD

sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005 - 11 juil. 2005 à 14:45
 rudolph974 - 8 déc. 2005 à 07:58
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

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 juil. 2005 à 15:02
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, ++
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
11 juil. 2005 à 15:54
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!
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 juil. 2005 à 18:43
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
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 juil. 2005 à 18:44
petite correction: ce n'est pas -p password, mais -ppassword (ne me demande pas pourquoi :))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
11 juil. 2005 à 19:26
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, ++
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 09:18
Merci beaucoup j'essaie de suite!
a+
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 09:41
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
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 juil. 2005 à 09:46
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, ++
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 09:54
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+
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 juil. 2005 à 09:57
ok,

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

a+
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 10:23
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?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 juil. 2005 à 10:40
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>
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 11:16
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 ??
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 juil. 2005 à 11:28
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, ++
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 11:52
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+
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 juil. 2005 à 12:01
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, ++
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 12:04
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)
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 12:26
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+
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
12 juil. 2005 à 12:56
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!
0
sosofi Messages postés 14 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 14:00
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+
0
Rejoignez-nous