Besoin d'aide en DOM et PHP

Fermé
rose77 - 8 déc. 2007 à 15:57
 rose77 - 9 déc. 2007 à 14:17
Bonjour, j'ai un document xml dont je veux extraire les données et les insérer dans une table mysql. Je rédige le programme en php et j'utilise dom pour extraire les données du xml. J'ai des warning à l'exécution des boucles FOREACH quelqu'un s'y connait-il?
A voir également:

11 réponses

pascal.barbier Messages postés 33 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 7 décembre 2008 6
8 déc. 2007 à 17:01
peux tu donner les exemples de lignes de code qui génèrent les warning ainsi que les messages d'erreur ?
0
rose77 Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 8 décembre 2007
8 déc. 2007 à 17:28
Merci d'avoir répondu les message d'erreur sont Warning: Invalid argument supplied for foreach() in C:\... à chaque tour des foreach
0
rose77 Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 8 décembre 2007
8 déc. 2007 à 17:40
en fait le programme est le suivant:
<?php
$fichier = "test.xml";
$racine=$dom->documentElement;
echo "L'element racine se nomme : ", $racine->nodeName;
$tab=$racine->childNodes;
//$nb=count($tab);
foreach($tab as $enfant){
echo $enfant->nodeName;
$tab1=$enfant->childNodes;
foreach($tab1 as $enfant1){
echo $enfant1->nodeName;
$tab2=$enfant1->childNodes;
foreach($tab2 as $enfant2){
echo $enfant2->nodeName;
$tab3=$enfant2->childNodes;
foreach($tab3 as $enfant3){
echo $enfant3->nodeName;
echo $enfant3->nodeValue;}}}}
?>

pour extraire les données du fichier xml suivant:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE continents SYSTEM "test.dtd">
<POSTE>
<PAC>
<COD type="gfj">75101</COD>
<DAT nom="date fin periode">20051031</DAT>
<GROUPE nom="col" type="coli">0</GROUPE>
<GROUPE nom="env" type="envel">4</GROUPE>
<GROUPE nom="chr" type="chrono">3</GROUPE>
<coli/>
<envel>
<envoi>
<date nom="dat">20051001</date>
<cp nom="cp">78900</cp>
<adre nom="adre">4 rue du tedo</adre>
<ville nom="ville">paris</ville>
</envoi>
<envoi>
<date nom="dat">20051010</date>
<cp nom="cp">15646</cp>
<adre nom="adre">4 av sdgsog</adre>
<ville nom="ville">ducro</ville>
</envoi>
<envoi>
<date nom="dat">20050801</date>
<cp nom="cp">15645</cp>
<adre nom="adre">8 rue de tarb</adre>
<ville nom="ville">tredo</ville>
</envoi>
<envoi>
<date nom="dat">20050601</date>
<cp nom="cp">78900</cp>
<adre nom="adre">8 bd faut</adre>
<ville nom="ville">paris</ville>
</envoi>
</envel>
<chrono>
<envoi>
<date nom="dat">20050701</date>
<cp nom="cp">78900</cp>
<adre nom="adre">6 bd jean</adre>
<ville nom="ville">reins</ville>
</envoi>
<envoi>
<date nom="dat">20050601</date>
<cp nom="cp">78900</cp>
<adre nom="adre">4 rue du tedo</adre>
<ville nom="ville">paris</ville>
</envoi>
<envoi>
<date nom="dat">20050517</date>
<cp nom="cp">54645</cp>
<adre nom="adre">19 bis rue franc</adre>
<ville nom="ville">brazil</ville>
</envoi>
</chrono>
</PAC>
</POSTE>
0
pascal.barbier Messages postés 33 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 7 décembre 2008 6
8 déc. 2007 à 17:40
ok maintenant on pourrait avoir un bout de code contenant ce foreach pour identifier l'erreur ?
0

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

Posez votre question
rose77 Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 8 décembre 2007
8 déc. 2007 à 17:41
Oui je viens de l'envoyer
0
pascal.barbier Messages postés 33 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 7 décembre 2008 6
8 déc. 2007 à 17:46
Oui j'ai vu

Apparament les tableaux de noeud retournés par child nodes sont invalides.
Je n'ai pas de plateforme php avec DOM sous la main pour tester mais je regarderais dès que possible
0
rose77 Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 8 décembre 2007
8 déc. 2007 à 17:49
ok je te remercie d'avance
0
pascal.barbier Messages postés 33 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 7 décembre 2008 6
8 déc. 2007 à 18:04
En relisant le texte de plus près je m'apperçois que l'objet $dom n'a pas été créé et le fichier n'a pas été chargé :

$dom=new DOMDocument;
$dom->load($fichier);

Selon la version de DOMXML il faudra peut être des arguments supplémentaires : voir la doc.

Le reste devrait fonctionner
0
rose77 Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 8 décembre 2007
8 déc. 2007 à 18:25
excuse moi j'au coupé le script , j'avais créé le $dom avant:
$fichier = "test.xml";
$dom = new DOMDocument();
$dom->load($fichier);
et il m'affiche bien le bon résultat de la racine à la ligne: echo "L'element racine se nomme : ", $racine->nodeName;
0
rose77 Messages postés 6 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 8 décembre 2007
8 déc. 2007 à 18:38
désolée mon temps de connexion est fini je me reconnecte demain en espérant que toi aussi. merci pour ton intervention
0
bonjour, y a t-il quelqu'un pour m'aider?
0