Parser un fichier xml et récupérer le nom des fichiers xml

Petit nouveau ! | 3 Messages

21 mai 2013, 15:02

Bonjour,

Je suis en 2ème année de BTS IRIS et j'ai un projet à rendre dans peu de temps.
J'explique un peu la situation, j'ai une SunnyWebBox qui envoie a intervalle régulier des fichiers xml zippé sur mon NAS.
Mon but est de récupérer (parser) les informations que je souhaite garder pour les rentrer dans ma BDD.
Je n'ai pas encore modifié mon code PHP en objet, je le ferais plus tard.

Voici ma connexion à ma BDD, en sachant qu'elle se trouve sur le NAS :
$host = "localhost";
$user = "root";
$bdd = "mydb";
$passwd = "";
global $host,$user,$passwd,$bdd;
mysql_connect($host,$user,$passwd)or die("erreur de connexion au serveur");
mysql_select_db($bdd)or die("erreur de connexion a la base de donnees");
Je vous envoie également un bout des flux xml que je reçois de la SunnyWebBox :

<Info>
<Created>2013-05-11T16:00:40</Created>
<Culture>en-US</Culture>
</Info>
<MeanPublic>
<Key>WR25-039:2001650866:Aktives Team</Key>
<First>1</First>
<Last>1</Last>
<Min>1</Min>
<Max>1</Max>
<Mean>1</Mean>
<Base>256</Base>
<Period>900</Period>
<TimeStamp>2013-05-11T16:00:40</TimeStamp>
</MeanPublic>
<MeanPublic>
<Key>WR25-039:2001650866:E-Total</Key>
<First>3990.629</First>
<Last>3990.835</Last>
<Min>3990.629</Min>
<Max>3990.835</Max>
<Mean>3990.740652</Mean>
<Base>256</Base>
<Period>900</Period>
<TimeStamp>2013-05-11T16:00:40</TimeStamp>
</MeanPublic>

Moi je souhaite récupérer le Mean [1] et [10], ainsi que la date et l'heure du fichier crée, trouvé dans la balise <Created>.
J'ai donc essayé de charger mon fichier xml et de parser les informations que je voulais, mais mon problème c'est qu'il faut que je le fasse sur tous les fichiers que je récupère. J'en récupère environs toutes les 15 min sur le NAS. Du coup, je ne peux pas mettre un nom de fichier en dur, vu qu'il change à chaque fois. Il faut donc que je récupère le nom du fichier xml en PHP, mais je ne trouve vraiment rien sur le net pour y arriver.. :((
Voici ce que j'ai essayé de faire :

Petit nouveau ! | 3 Messages

21 mai 2013, 15:05

$xml_file = 'flux.xml';  //codé en dur ici

/*$xml_file = $_GET['xml_file']; //là j'ai essayé de récupérer le nom, mais j'y arrive pas. 
echo $xml_file;*/

$flux_xml = simplexml_load_file($xml_file);

$MeanPublic = $flux_xml->MeanPublic[1];             
$Mean = $MeanPublic->Mean;
foreach ($Mean as $value) {
echo $energie = $value;
}

$MeanPublic = $flux_xml->MeanPublic[10];             
$Mean = $MeanPublic->Mean;
foreach ($Mean as $value) {
echo $puissance = $value;
}

$Info = $flux_xml->Info[0];
$Created = $Info->Created;
foreach ($Created as $value) {
$DateHeure = $value; 
$value=explode("T",$DateHeure);
 $date = $value[0]; 
 $time = $value[1]; 
}
Et enfin, j'ai fait ma requête pour l'envoyer dans ma BDD, mais une nouvelle fois, ça ne marche pas.. >.<
$requete1 = "INSERT INTO mydb.mesuresP (id, puissance, energie) VALUES (NULL, '$puissance', '$energie')";
$requete2 = "INSERT INTO mydb.timer (id, date, time) VALUES (NULL, '$date', '$time')";

$reponse1 = mysql_query($requete1) or die( mysql_error());
$reponse2 = mysql_query($requete2) or die( mysql_error());
Je sais que j'ai beaucoup de problèmes et j'espère que vous arriverez à m'aider à résoudre mes problèmes rapidement.
Sinon, je ne pourrais pas finir mon projet. :(
Merci d'avance !
Si vous avez des questions pour mieux m'aider par la suite.. =)

Miyu

Petit nouveau ! | 3 Messages

21 mai 2013, 15:25

J'ai voulus testé en local avec wamp et ça me donne que des erreurs. Mais je ne sais pas quoi faire pour les résoudre. >.<
SCREEN : http://hpics.li/0e6adf7

Eléphant du PHP | 353 Messages

22 mai 2013, 10:09

J'ai voulus testé en local avec wamp et ça me donne que des erreurs. Mais je ne sais pas quoi faire pour les résoudre. >.<
SCREEN : http://hpics.li/0e6adf7
Le fichier xml n'existe pas et tu as l'erreur à la ligne 47 (celle du simplexml_load_file). Toutes les autres erreurs sont liées car après $flux_xml est nul.
Ton code laisse supposer que le fichier flux.xml est au même niveau que le script parser.php. Est-ce le cas ?