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

PHP & Base de données Discussion :

Exploitation d'un array imbriqué [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut Exploitation d'un array imbriqué
    Bonjour,

    J'ai deux fonctions qui me permettent de récupérer les commentaires d'un article ainsi que les commentaires qui commentent le commentaire.

    Ainsi, par exemple, je me retrouve avec trois commentaires dont un qui commente un commentaire.

    je me retrouve avec un array contenant :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Array
    (
        [0] => Array
            (
                [id_commentaire] => 36
                [u_id] => 18
                [commentaire_titre] => Mon message
                [commentaire_contenu] => 
     
    super trek !!!
     
    ça fait envie tout de même, pour vous rassurer nous aussi dans les pyrénées nous manquons énormément de neige....cette année ne semble pas être une bonne saison hivernale.
     
    Mais heureusement les paysages sont toujours la pour alimenter notre regard Rigolant
     
                [commentaire_timestamp] => 1298326740
                [children] => 
            )
     
        [1] => Array
            (
                [id_commentaire] => 37
                [u_id] => 2
                [commentaire_titre] => Un super Vercors
                [commentaire_contenu] => 
     
    Salut,
     
     
     
    Super joli le Vercors. Nous pensons y retourner pendant l'été car le calcaire y est superbe et les vues excellentes.
     
    Nous conseillons fortement la traversée de la réserve naturelle !
     
    @+Sourire et merci pour tes commentaires.
     
                [commentaire_timestamp] => 1298359980
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id_commentaire] => 36
                                [u_id] => 18
                                [commentaire_titre] => Mon message
                                [commentaire_contenu] => 
     
    super trek !!!
     
    ça fait envie tout de même, pour vous rassurer nous aussi dans les pyrénées nous manquons énormément de neige....cette année ne semble pas être une bonne saison hivernale.
     
    Mais heureusement les paysages sont toujours la pour alimenter notre regard Rigolant
     
                                [commentaire_timestamp] => 1298326740
                                [children] => 
                            )
     
                    )
     
            )
     
    )
    Pour exploiter ces informations, j'ai essayé un foreach imbriqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($test as $key => $value )
    	{
    	  echo $key . ': <br />';
     
    	  foreach( $value as $valeur )
    		echo '  ' . $valeur . '<br />';
     
    	  echo '<br />';
    	}
    Qui me retourne :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    0:
    36
    18
    Mon message
     
    super trek !!!
     
    ça fait envie tout de même, pour vous rassurer nous aussi dans les pyrénées nous manquons énormément de neige....cette année ne semble pas être une bonne saison hivernale.
     
    Mais heureusement les paysages sont toujours la pour alimenter notre regard Rigolant
     
    1298326740
     
     
    1:
    37
    2
    Un super Vercors
     
    Salut,
     
     
     
    Super joli le Vercors. Nous pensons y retourner pendant l'été car le calcaire y est superbe et les vues excellentes.
     
    Nous conseillons fortement la traversée de la réserve naturelle !
     
    @+Sourire et merci pour tes commentaires.
     
    1298359980
    Array
    On remarque alors que seul les commentaires "basiques" sont retournés.

    Comment puis-je faire pour récupérer les commentaires commenté ?

    Merci !

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function print_msg($test)
    {
    	foreach($test as $key => $value )
    	{
    		if ($key == "children" && is_array($value))
    			print_msg($value);
     
    		echo $key . ': <br />';
    		foreach( $value as $valeur )
    			echo '  ' . $valeur . '<br />';
     
    		echo '<br />';
    	}
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Bonjour et merci pour la fonction,

    Cependant, il y a une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invalid argument supplied for foreach() in file /homepages/23/d281297373/htdocs/php/articles/commentaire/commentaire.php (157)
    Sachant que cette ligne est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($value as $valeur)

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function print_msg($test)
    {
    	foreach($test as $key => $value )
    	{
    		if ($key == "children" && is_array($value))
    			print_msg($value);
     
    		echo $key . ': <br />'; echo '  ' . $valeur . '<br />';
     
    		echo '<br />';
    	}
    }
    Ou si tu peut m'envoyé un array en php que je puisse testé

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut fonction au top : array_walk_recursive
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    Class Commentaire_filter{
                static function test_print($item, $key)
                {
                echo "$key : $item\n<br/>";
                }
         }
     
    $Commentaire =
    Array(
        0=> Array(
                "id_commentaire" => 36,
                "u_id" => 2,
                "commentaire_titre" =>' Mon message',
                "commentaire_contenu" => 'Super trek !!! ',
                "commentaire_timestamp" => 1298326740,
                "children" => ""
        ),
        1=> Array(
                "id_commentaire" => 37,
                "u_id" => 14,
                "commentaire_titre" =>'Un super Vercors',
                "commentaire_contenu" => 'Super joli le Vercors.',
                "commentaire_timestamp" => 1298359980,
                "children" => Array
                            (
                            0  => Array
                               (
                                   "id_commentaire" => 38,
                                   "u_id" => 18,
                                   "commentaire_titre"=>  "Mon message" ,
                                   "commentaire_contenu" => "ça fait envie tout de même,",
                                   "commentaire_timestamp" => 1298326740,
                                   "children" => ""
                               )
                            )
                )
        );
     
     
     array_walk_recursive($Commentaire, 'Commentaire_filter::test_print');
       ?>

    Avec ca tu peu par par exemple tester si la variable $children et vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $key==$children && $item ==""){...}

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    Bonjour Ascito et merci pour cette proposition qui semble fonctionner à merveille

    Pourrais-tu me dire comment, d'une manière simple et efficace, je pourrais mettre le résultat en œuvre pour mettre en avant le message d'origine et le ou les messages cités. Faut-il utiliser la balise blockquote ou uniquement du CSS ?

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

Discussions similaires

  1. Tri array imbriqué
    Par chouchouilloux dans le forum Langage
    Réponses: 4
    Dernier message: 31/10/2012, 23h01
  2. [XL-2003] arrays imbriquées ?
    Par fb62840 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/05/2012, 15h20
  3. Réponses: 2
    Dernier message: 26/05/2011, 16h43
  4. [PHP 4] array imbriqué : afficher les numéros de ligne d'un menu arborescent
    Par PHPdudimanche dans le forum Langage
    Réponses: 1
    Dernier message: 12/01/2009, 14h28
  5. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 14h03

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