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 :

Lecture d'un objet stdclass


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut Lecture d'un objet stdclass
    Voici l'objet en question pour commencer :
    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
    stdClass Object
    (
        [TotalRecords] => 1
        [TransactionCollection] => stdClass Object
            (
                [Transaction] => stdClass Object
                    (
                        [BasketInfo] => stdClass Object
                            (
                                [BasketId] => 327051132
                                [OpenBasketItemCount] => 1
                                [RegisteredNetPrice] => 64.12
                                [TotalBasketItemCount] => 1
                            )
     
                        [CancellationReason] => 
                        [CheckDate] => 
                        [ClickDate] => 2017-11-04T14:07:26
                        [CreativeInfo] => stdClass Object
                            (
                                [CreativeNumber] => 24
                                [CreativeType] => Banner
                            )
     
                        [NetPrice] => 64.12
                        [ProgramId] => 15307
                        [ProgramTitle] => Croquetteland
                        [PublisherCommission] => 2.56
                        [RateInfo] => 
                        [RegistrationDate] => 2017-11-04T14:10:50
                        [SubId] => mike34
                        [TrackingMethod] => PostClick
                        [TransactionId] => 301234315
                        [TransactionStatus] => Open
                    )
     
            )
     
    )
    Rien de compliqué à première vue mais ...
    Ensuite voici mon code pour le traiter, $response contient l'objet stdclass :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $nbrep=$response->TotalRecords;
    if ($nbrep>0){
    print_r($response);
    foreach ($response->TransactionCollection->Transaction as $event) {
    print_r($event);
    $idachat=trim($event->TransactionId);
    }
    }
    Je récupère parfaitement TotalRecords le vrai souci se passe dans la boucle foreach, $event est supposé contenir toutes les "transactions".
    Ma ligne : $idachat=trim($event->TransactionId); renvoie l'erreur suivante Notice: Undefined property: stdClass::$TransactionId j'ai donc eu l'idée de faire un print_r sur $event sur la variable qui contient la transaction et là mauvaise surprise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    stdClass Object
    (
        [BasketId] => 327051132
        [OpenBasketItemCount] => 1
        [RegisteredNetPrice] => 64.12
        [TotalBasketItemCount] => 1
    )
    Où est le reste ???
    Merci d'avance si vous avez une idée de pourquoi je rencontre ce souci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    ça m'a tout l'air d'être ton objet BasketInfo que tu affiches là.
    Le problème vient sans doute de ton foreach : foreach appliqué à un objet parcourt toutes les propriétés. En fait, je ne vois pas bien à quoi est censé servir ce foreach : tu as un object TransactionCollection qui contient un object Transcation. Un foreach n'a d'intérêt que si il y a un tableau à parcourir
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Il y a normalement soit une transaction soit plusieurs d'où le foreach. Sinon effectivement il ressort le basketinfo et pas le reste et je ne comprends pas pourquoi

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 570
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 570
    Par défaut
    Ce code fonctionne peut-être quand il y a plusieurs transactions.
    Mais quand il y en a une seule, vous trouverez surement votre information en lisant "$response->TransactionCollection->Transaction->TransactionId"

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Alors si j'accède directement et donc sans boucle à l'objet stdclass çà fonctionne...
    echo $response->TransactionCollection->Transaction->SubId;
    Mais le souci c'est comment on va faire quand il y en a plusieurs de transaction ? Et donc normalement il faudrait une boucle

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Le plus simple serait peut-être que tu fasses un essai plusieurs transactions et que tu affiches ton objet, histoire qu'on voit à quoi ressemble ton objet TransactionCollection dans ce cas.
    Dans le pire des cas, je pense que tu pourrais faire un test sur la propriété TotalRecords, qui m'a tout à l'air d'être le nombre de transactions : si ça vaut 1, tu accèdes directement à l'objet ; si ça vaut au moins 2, tu boucles.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. [AJAX] Lecture d'un objet JSON
    Par steackfrite dans le forum jQuery
    Réponses: 24
    Dernier message: 07/02/2014, 14h44
  2. Lecture d'un objet serial GPS
    Par juminet dans le forum Signal
    Réponses: 2
    Dernier message: 18/12/2007, 17h39
  3. Lecture d'un objet depuis un fichier bloquant
    Par dest dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 11/05/2007, 16h19
  4. Lecture / écriture d'objets sur le disque dur ?
    Par miria.vhg dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/02/2007, 15h21

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