MySql, génération de XML sur modification

Petit nouveau ! | 1 Messages

30 août 2006, 09:32

Bonjour,

J'ai un souci sur ma BDD Mysql. J'ai des scripts php qui me génèrent du Xml à partir d'une base de donnée :
<?php
	
    require_once('db_config.inc.php'); // connect mysql db through $dbh
    $query = "SELECT * FROM cinema";
    $result = mysql_query($query,$dbh);
   	$_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
	$_xml .= "<cine>\r\n";
	
	while ($row = mysql_fetch_array($result)) {
		$_xml .= "\t<type value=\"" . $row['c_id'] . "\"> ".$row['c_nom']." </type>\r\n";
	}
	
	$_xml .= "</cine>\r\n";
	echo $_xml;
	
	mysql_free_result($result);
 	mysql_close($dbh) or die ("Could not close connection to database!");
?>

A partir de ça j'ai deux questions, une simple :
Comment je l'enregistre dans un fichier ?
Et une compliquée :
Comment puis-je regénérer ce fichier en cas de modification de la base de donnée ?
Je sais qu'en Postgre il existe des triggers qui le détectent mais ceux ci ne peuvent de toute façon pas générer de xml il me semble mais de toute façon je suis sous mysql. ?



ps: une dernière pour la route, y a t il un logiciel ou un sciprt qui a partir d'une BDD peut générer automatiquement le schéma UML ou relationnel ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 août 2006, 22:47

Salut,

Je pense qu'une écriture simple d'un fichier à l'aide de fwrite() ou file_put_contents() si tu dispose de php5 devrait suffir puisque tu le crée déjà le xml avec ce script. :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

31 août 2006, 09:14

En fait mon souci c'est pas le l'écrire, maintenant ca c'est réglé vaec ca:

$fp = fopen("truc.xml", 'w+');
fputs($fp, $_xml);
fclose($fp);

La ce que je voulais c'est executer ce code que si la BDD a changée ...

Mammouth du PHP | 19672 Messages

31 août 2006, 09:23

Si tu utilises MySQL 5, il serait possible d'utiliser une série de triggers qui retournerait une valeur spécifique lorsque tu effectues une mise à jour des données dans la base, valeur que tu devrais récupérer pour déclencher la mise à jour de tes fichiers. J'ajoute en outre que, si ce fichiers sont une sauvegarde, tu pourrais peut-être, si tes accès sont suffisants, envisager à la place de créer une réplication sur un autre serveur ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 août 2006, 09:23

Si tu as mySQL en version 5, tu pourras avoir accès aux triggers, pas dans une version inférieure. :?

Est-ce qu'il est vraiment vital de regénérer ce fichier à chaque modification ou est-ce que tu te peut te permettre une latence ? Dans ce cas là, tu peux lancer un cron régulier qui regénérera ce fichier

Sinon, si tu passes par une classe pour gérer ta classe cinema, il te suffit de placer le script qui génere le XML après chaque requete UPDATE ou INSERT
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer