PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 09-11-2009 20:06:18

manuso
Membre
Inscription : 09-11-2009
Messages : 3

boucle sur un fichier xml

bonsoir,

Je n'arrive pas à comprendre pourquoi mon parsing n'est pas complet sur un flux xml.

Pour essayé d'être simple, il y a 5 titres puis sous chaque titre, 5 produits sauf sous le premier titre ou il y une échelle de
prix, mon code parse bien les 5 titre premiere boucle 1) mais répète l'echelle de prix sous tous les autres titres alors qu'il
devrait y avoir 5 produits. Donc cette 2ième boucle est mal écrite piusqu'elle affiche:

*Find by Price Range               
Below $490                 
$490 - $770                 
$770 - $1170                 
$1170 - $1610                 
Above $1610                 

// ici répétition anormal de la fourchette de prix
*Find by Brand                 
Below $490             
$490 - $770                 
$770 - $1170                 
$1170 - $1610                 
Above $1610                 
etc ....

Au lieu de cela

*Find by Price Range
Below $490                 
$490 - $770                 
$770 - $1170                     
$1170 - $1610                 
Above $1610                 

*Find by Brand
ASUS
eMachines
Cybertron
Hewlett Packard
Acer
etc   .....

$category = $parser->document->categories[0]->category[0]; //ok
$match_count = $category->items[0]->tagAttrs['matcheditemcount']; //ok
$attributes = $category->attributes[0]->attribute[0];
// nombre de resltats ok
echo "<div id='total_num_of_matches_container'><div id='total_num_of_matches'>You found $match_count matches.\n</div>"; //ok
 
1//
foreach($parser->document->categories[0]->category[0]->attributes[0]->attribute as $attributes)
{
echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches> ".$attributes->name[0]->tagData;"</div>";
 
2//
foreach ($parser->document->categories[0]->category[0]->attributes[0]->attribute[0]->attributevalues[0]->attributevalue as $attributevalues){
echo "<div class='offertitle'>".$attributevalues->name[0]->tagData."</a></div>";
}
}

J'ai mis un exemple complet ici pour mieux comprendre
fichier de démo ici: http://www.listepro.com/test/Televiseur … 6252,1.htm

Le fichier tel qu'il devrait s'afficher en tout en haut de la page.
http://techreviewsource.com/shoppingcom … k=Desktops

Le fichier parsé,  je précise cette partie du parsing qui pose problème est en bas du fichier xml.
http://sandbox.api.shopping.com/publish … thValues=5


Merci si vous avez une idée pour écrire ou imbriquée  cette 2ieme boucle

manuso

Hors ligne

#2 10-11-2009 21:22:49

Maskime
Membre
Lieu : Paris 15ème
Inscription : 11-05-2009
Messages : 134
Site Web

Re : boucle sur un fichier xml

Hello,

C'est quoi ton parser de XML ?

Petite remarque au passage: Ca coute pas grand chose de mettre des variables intermédiaires wink :


$aAttributeList = $parser->document->categories[0]->category[0]->attributes[0]->attribute;
foreach($aAttributeList as $attributes){[...]
 

Y a autre chose qui me surprends dans ton code, c'est que la variable '$attributes' est déclarée et assignée au début, mais ensuite dans le 1er foreach, elle est écrasée...
Est ce que ton problème ne viendrai pas de là ? smile

Dernière modification par Maskime (10-11-2009 21:28:26)


La programmation est composée de 80% de réflexion pour 20% de syntaxe -> réfléchissez à votre problème par étapes

Recommande l'utilisation du pattern Singleton
Si jamais je poste un morceau de code pour vous aider, prenez bien compte que je n'ai pas forcément testé le code que je poste et qu'il est possible qu'il contienne des erreurs wink

Hors ligne

Pied de page des forums