IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Probleme affichage données tableau multidimensionel


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Points : 9
    Points
    9
    Par défaut [Tableaux] Probleme affichage données tableau multidimensionel
    Salut,

    Je suis toujours en train de chercher un moyen de récupérer TOUTES les données de mon flux xml...

    Pour récupérer les données du flux, j'utilise dans le parser php ce code :

    Code : 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
    	foreach ($this->xml->MSLIVESCOREDATA->SPORT as $sport)
    	{
    		if($sport->NAME->data == 'Soccer') // pour n'afficher que le foot
    		{
    		echo 'Sport (sport id : '.$sport->attr['MSSPORTID'].') : '.$sport->NAME->data.'<br />'; 
    		foreach ($sport->CATEGORY as $category)
    		{
    			echo 'Pays  (pays id : '.$category->attr['MSCATEGORYID'].') : '.$category->NAME->data.'<br />';
    			foreach ($category->TOURNAMENT as $division)
    			{
    				echo 'Division (division id : '.$division->attr['MSTOURNAMENTID'].') : '.$division->NAME->data.'<br />';
    			}
    		}
    		echo '<br >';
    		}
    	}
    Ce script devrait normalement afficher TOUTES les données concernant le "Soccer". Il doit afficher les divisions par pays, et par sport (ici j'ai limité au soccer).

    Exemple :
    > Soccer
    >> France
    >>> Ligue 1
    >>> Ligue 2
    >>>National

    Le résultat de ce script se trouve ici :
    (vous trouverez juste en dessous le tableau multidimensionel que me retourne le parser php)
    http://www.smcaen.com/test2.html

    Est ce que quelqu'un sait au vu de mon code pourquoi il ne retourne pas tous les noms des divisions ? Il n'en affiche que quelqu'unes...

    Je ne comprends pas... car le script liste comme il faut tous les sports ainsi que tous les pays par sport...

    Auriez vous une idée ? est ce que je m'y prends mal ?

    Merci !

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Parce que $category->TOURNAMENT n'est pas forcément un tableau, il peut être un simple objet (en fonction du nombre de fils de son père: 1 => objet, 2 ou plus => tableau d'objets).

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Il n'est pas forcément un tableau ?

    Si l'on prend l'exemple avec le soccer Czech, pour la première division de ce pays, le code correspondant est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                                                [TOURNAMENT] => stdClass Object
                                                    (
                                                        [attr] => Array
                                                            (
                                                                [MSTOURNAMENTID] => 49
                                                            )
     
                                                        [data] =>       
                                                        [NAME] => stdClass Object
                                                            (
                                                                [data] => Gambrinus Liga
    Il s'agit bien d'un tableau objets => [TOURNAMENT] => stdClass Object .

    Derrière ce premier enregistrement, [data] => Gambrinus, il y en a plusieurs qui suivent pourtant... et ce pour les différents pays...

    J'ai du mal à comprendre le problème. Pour moi il s'agit bien d'un tableau d'objets, et je demande bien à afficher tous les objets du tableau.

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Non, "stdClass Object" ca ne veut pas dire tableau !!! "Array" par contre oui...

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                                                [NAME] => stdClass Object
                                                    (
                                                        [data] => Germany
                                                    )
     
                                                [TOURNAMENT] => Array
    Versus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                                                [NAME] => stdClass Object
                                                    (
                                                        [data] => France
                                                    )
     
                                                [TOURNAMENT] => stdClass Object
    Tu vois bien qu'il y a une différence...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci Mr N. pour cet exemple concret !
    Je pensais que c'était la même chose partout... j'aurais du prendre la peine de regarder .
    Je vais regarder ça de plus prêt !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Ca ne vas pas être simple dans le 3ème foreach.

    Quelle est la meilleure solution pour "mixer" les données de types array ([TOURNAMENT] => Array) et celles de types Objets ([TOURNAMENT] => stdClass Object) ?
    Je ne sais pas si c'est possible .

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si si c'est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($category->TOURNAMENT as $division)
    à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!is_array($category->TOURNAMENT)) {
       $category->TOURNAMENT = array($category->TOURNAMENT);
    }
    foreach ($category->TOURNAMENT as $division)
    Non testé...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Ca fonctionne parfaitement, merci pour ton aide !
    J'ai compris le principe maintenant !

    Je vais continuer à récupérer les différentes données avec le même principe, je pense que ca devrait être bon maintenant !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme affichage données datagrid
    Par noname_971 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 02/04/2009, 18h09
  2. Probleme affichage données dans un tableau
    Par spider_sup dans le forum NetBeans
    Réponses: 0
    Dernier message: 15/08/2008, 12h10
  3. comment faire ! affichage données tableau
    Par tro2blabla dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/07/2008, 15h28
  4. Probleme affichage dans tableau selon requête
    Par moulette85 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 01/03/2005, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo