Bonjour,
Je suis nouvelle ici, donc je vais essayer de présenter les choses bien! Si ce n'est pas le cas, veuillez m'excuser, et n'hésitez pas à me reprendre!
Aussi je sors tout juste de formation en développement donc je suis une noob! Merci de garder ce petit détail en tête pour la suite!
Voici mon problème,
J'ai un script PHP qui doit
1) ouvrir un répertoire dont l'URL a été renseigné dans une variable,
2) Parcourir ce répertoire et ouvrir chacun des fichiers XML qu'il contient,
3) Pour chaque fichier il doit extraire et stocker le contenu de deux balises
<FLX_REF> </FLX_REF> pour obtenir le nom du fichier
<NBR_ELT> </NBR_ELT> pour obtenir le nombre de flux dans le fichier
4) Stocker ces informations dans deux tableaux différents.
Le premier tableau sert à comptabiliser le nombre de fichier qui portent le même nom et donc faire la somme de leur contenu.
Le second tableau sert à stocker le détail de chaque flux.
Ces tableaux me serviront plus tard à générer le contenu d'un fichier Excel.
Je ne peux pas vraiment vous montrer le contenu d'un flux XML car il contient des données sensibles, mais voici son squelette :
Voici mon petit script:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="ISO-8859-15"?> <FLUX> ... <FLX_REF>nom du fichier</FLX_REF> ... <NBR_ELT>1234</NBR_ELT> ... ... </FLUX>
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 $v_repertoire = opendir($v_URL); while(FALSE !== $v_fichier = readdir($v_repertoire)){ //Certains flux bien précis ne doivent pas être lu... if(substr("$v_fichier", -5, 1) == 0){ $o_xml = simplexml_load_file("$v_fichier"); //extraire le nom complet du flux et le stocker $v_nom_long_flux = $o_xml->FLUX->FLX_REF; //extraire le nombre d'éléments du flux et le stocker $v_nb_docs = $o_xml->FLUX->NBR_ELT; //extraire le nom court du flux et le stocker (retirer les 22 derniers caractères car il différencie les fichiers entre eux) $v_nom_court_flux= substr("$v_nom_long_flux", 0, -22); //Tester le nom du flux //stocker infos dans tableau de références foreach($t_references as $v_nom_flux){ if($v_nom_court_flux == $v_nom_flux){ //Si ce nom apparait déjà dans le tableau de référence $v_occurences++; //incrémenter 'Nombre de fichier' $v_total_documents = $v_total_documents + $v_nb_docs; //calcule 'Nb total de documents' }else{ $v_nom_flux = $v_nom_court_flux;//ajouter le flux de données au tableau de références $v_occurences++; //incrémenter 'Nombre de flux' $v_total_documents = $v_nb_docs; } } //stocker les infos dans tableau reprenant le détail de chaque flux foreach($t_details as $v_nom_complet->$v_nb_elements){ $v_nom_complet = $v_nom_long_flux; $v_nb_elements = $v_nb_docs; } fclose($v_fichier); } }
Et voici le résultat de mon script :
Je ne comprends pas vraiment ces erreurs, ou en tout cas leurs provenance, ni comment les résoudre... Alors merci de m'éclairer de vos lumières!Warning: simplexml_load_file(.) [function.simplexml-load-file]: failed to open stream: Permission denied in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 124
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "." in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 124
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 126
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 126
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 128
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 128
Warning: fclose() expects parameter 1 to be resource, string given in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 148
Warning: simplexml_load_file(..) [function.simplexml-load-file]: failed to open stream: Permission denied in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 124
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity ".." in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 124
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 126
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 126
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 128
Notice: Trying to get property of non-object in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 128
Fatal error: Cannot access empty property in D:\xampp\htdocs\PhpProject1\controleur\gerer_rapport_emission.php on line 144![]()
Partager