PHP/DOM problême simple et rapide

Fermé
Max - 19 févr. 2009 à 13:17
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 - 19 févr. 2009 à 14:48
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
<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:

11 réponses

djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
19 févr. 2009 à 13:30
echo '<a href="'.$lienpage.'"><img src="'.$lienimg.'"></a>';

Ca marches là ?
0
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)
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
19 févr. 2009 à 13:59
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 />";
  }
0
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.
0

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

Posez votre question
en tout cas...
$listepages as $pages : ok
$pages->nodeValue : ok
$listepages as $pages : ok
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
19 févr. 2009 à 14:07
Un exemple du code html généré en sortie ? Ou une page web à visiter pour constater et essayer de mieux comprendre ?
0
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.

http://www.madebyrose.com/x1.jpg</code>
                
                
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
19 févr. 2009 à 14:26
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 :

  $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 ?
0
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)
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
19 févr. 2009 à 14:48
$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;
0