PHP/DOM problême simple et rapide
Max
-
djflexlive Messages postés 557 Date d'inscription Statut Membre Dernière intervention -
djflexlive Messages postés 557 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en php !!
J'ai un souci avec ma boucle qui m'affiche plein de choses bizarres.
Je récupère 2 information de mon fichier xml : d'une part les "enclosure" d'autre part la valeur ('url') de l'élément "link" . Là ou le bas blesse est que j'essaye de créer une série d'images (enclosure) cliquables ( grace à notre valeur url) Je pense avoir réussi à ressortir les deux et à les afficher indépendement. Maintenant lorsque j'essayes de faire une boucle avec mes images et de les rendre à la fois cliquable au moyen de mes url ca foire superbement! Le problême est dans cette double boucle foreach mais je n'arrive pas à voir où.
Merci pour votre aide !!!
Voici la source XML
Voici la source php :
Je suis débutant en php !!
J'ai un souci avec ma boucle qui m'affiche plein de choses bizarres.
Je récupère 2 information de mon fichier xml : d'une part les "enclosure" d'autre part la valeur ('url') de l'élément "link" . Là ou le bas blesse est que j'essaye de créer une série d'images (enclosure) cliquables ( grace à notre valeur url) Je pense avoir réussi à ressortir les deux et à les afficher indépendement. Maintenant lorsque j'essayes de faire une boucle avec mes images et de les rendre à la fois cliquable au moyen de mes url ca foire superbement! Le problême est dans cette double boucle foreach mais je n'arrive pas à voir où.
Merci pour votre aide !!!
Voici la source XML
<item> <title>Hello</title> <description>Bellohelloetc</description> <link>http://www.mouette.com/reproductionmouette</link> <enclosure url="http://www.mouette.com/blablabla.jpg" length="21380" type="image/jpeg"></enclosure> </item>
Voici la source php :
$dom = new DomDocument; $dom->load("all.xml"); $listeliens = $dom->getElementsByTagName('enclosure'); $listepages = $dom->getElementsByTagName('link'); foreach($listeliens as $liens) { if ($liens->hasAttribute("url")) { $lienimg = $liens->getAttribute("url"); foreach($listepages as $pages) { if($pages->nodeValue) { $lienpage = $pages->nodeValue; echo "<a href=\"$lienpage\"><img src=\"$lienimg\"></a>"; } } } echo "<br />"; }
A voir également:
- PHP/DOM problême simple et rapide
- Acces rapide - Guide
- Télécharger film d'action gratuitement et rapidement - Télécharger - TV & Vidéo
- 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Copie rapide - Télécharger - Gestion de fichiers
11 réponses
C'est la même chose. Le problême se situe vraiment dans la boucle...
En gros il m'affiche 8 fois la même image avant de passer à l'image suivante qu'il m'affiche 8 fois et les 8x
correspondent à chaque lien. Donc il y a autant de "première image" qu'il y a de liens (url)
En gros il m'affiche 8 fois la même image avant de passer à l'image suivante qu'il m'affiche 8 fois et les 8x
correspondent à chaque lien. Donc il y a autant de "première image" qu'il y a de liens (url)
En mode "debug" ca dit quoi ?
$dom = new DomDocument; $dom->load("all.xml"); $listeliens = $dom->getElementsByTagName('enclosure'); $listepages = $dom->getElementsByTagName('link'); foreach($listeliens as $liens) { if ($liens->hasAttribute("url")) { $lienimg = $liens->getAttribute("url"); foreach($listepages as $pages) { echo '<br/>$listepages as $pages : ok'; if($pages->nodeValue) { $lienpage = $pages->nodeValue; echo "<a href=\"$lienpage\"><img src=\"$lienimg\"></a>"; echo '<br/>$pages->nodeValue : ok'; } } } echo '<br/>$listeliens as $liens : ok'; echo "<br />"; }
Aucun problême là dessus. C'est dans ma logique que ca coince.
Ce que je veux faire dire à mon document ici c'est bêtement : Pour chaque image que tu trouveras, affiche les et utilise le lien correspondent dans le même item.
Ce que je veux faire dire à mon document ici c'est bêtement : Pour chaque image que tu trouveras, affiche les et utilise le lien correspondent dans le même item.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Un exemple du code html généré en sortie ? Ou une page web à visiter pour constater et essayer de mieux comprendre ?
Voici ici à quoi ressemble le résultat. Donc plusieurs fois la même image qui utilise le lien suivant à chaque fois
Même chose pour la deuxième image qui se répète et ainsi de suite.
Même chose pour la deuxième image qui se répète et ainsi de suite.
http://www.madebyrose.com/x1.jpg</code>
Désolé, pas facile de t'aider en n'ayant pas tous les élements en mains, mais je comprends mieux ce qu'il se passe maintenant.
En supprimant cette boucle "foreach($listepages as $pages)" , ca donne ca :
Ca dit quoi ?
En supprimant cette boucle "foreach($listepages as $pages)" , ca donne ca :
$dom = new DomDocument; $dom->load("all.xml"); $listeliens = $dom->getElementsByTagName('enclosure'); $listepages = $dom->getElementsByTagName('link'); foreach($listeliens as $liens) { if ($liens->hasAttribute("url")) { $lienimg = $liens->getAttribute("url"); if($pages->nodeValue) { $lienpage = $pages->nodeValue; echo "<a href=\"$lienpage\"><img src=\"$lienimg\"></a>"; } } echo "<br />"; }
Ca dit quoi ?
Ca donne:
Notice: Undefined variable: pages in D:\wamp\www\hub\Untitled-1.php on line 23
Notice: Trying to get property of non-object in D:\wamp\www\hub\Untitled-1.php on line 23
Ligne 23 correspondant à : if($pages->nodeValue)
Notice: Undefined variable: pages in D:\wamp\www\hub\Untitled-1.php on line 23
Notice: Trying to get property of non-object in D:\wamp\www\hub\Untitled-1.php on line 23
Ligne 23 correspondant à : if($pages->nodeValue)
$listeliens = $dom->getElementsByTagName('enclosure');
$listepages = $dom->getElementsByTagName('link');
Ca te parse le xml et ca le stocke dans un array ? Comment c'est structuré la dedans ?
Ce que je comprends, c'est que tu as deux boucles mais qui vont pas chercher les infos les unes par rapport aux autres.
Dans foreach($listeliens as $liens) il y'a tous les liens de stockés et foreach($listepages as $pages) contient toutes les images ?
Donc dans ce cas là, tu répètes 8x ta boucle car il trouve 8 url et il affiche 8x les images car 8 images parsées dans ton .xml ...
Donc peut etre qu'il faut voir ce qui est donné dans $listeliens et $listepages
print_r($listeliens);
print_r($listepages;
$listepages = $dom->getElementsByTagName('link');
Ca te parse le xml et ca le stocke dans un array ? Comment c'est structuré la dedans ?
Ce que je comprends, c'est que tu as deux boucles mais qui vont pas chercher les infos les unes par rapport aux autres.
Dans foreach($listeliens as $liens) il y'a tous les liens de stockés et foreach($listepages as $pages) contient toutes les images ?
Donc dans ce cas là, tu répètes 8x ta boucle car il trouve 8 url et il affiche 8x les images car 8 images parsées dans ton .xml ...
Donc peut etre qu'il faut voir ce qui est donné dans $listeliens et $listepages
print_r($listeliens);
print_r($listepages;