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 :

[POO] Comprend pas une syntaxe


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    PLM IT Consultant
    Inscrit en
    Novembre 2003
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : PLM IT Consultant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 202
    Points : 86
    Points
    86
    Par défaut [POO] Comprend pas une syntaxe
    Bonjour,
    j'ai un petit soucis avec de la prog objet (PHP). J'aimerais savoir pourquoi je n'ai pas ce que je veux quand j'affiche... Résumé...

    J'ai une classe BD qui a cette fonction là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // -- Méthode donnant l'id de la dernière ligne insérée
    function idDerniereLigne ($col, $table)
    {  
    $temp = $this->execRequete ("SELECT MAX($col) FROM $table"); 
    $ligne = $this->objetSuivant($temp);
    return $ligne;	
    }
    J'appelle cette fonction dans une classe (ORDERS):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // -- Retrouve le dernier ID enregistré
    function dernierID_orders()
    {
    	return $this->bd->idDerniereLigne(pk_orders, orders);
    }
    Je ne sais pas comment sur ma page 'accueil.php' afficher la valeur de la function dernierID_orders!
    Voici la valeur que j'ai: Object id #6

    Pouvez-vous m'aider et m'expliquer pourquoi ça affiche cela!

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Points : 102
    Points
    102
    Par défaut
    bonsoir,

    cela manque un peu d'explications. D'où appel tu dernierID_orders() ? Et quel est le type de $ligne dans ta première fonction ? est tu sûr que ce n'est pas un objet ?

    si j'ai bien compris, pour appeler ta fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $orders = new Orders();
    echo $orders->dernierID_orders();
    utilise print_r ou var_dump pour afficher le type retour, cela te donnera un bon début de debuggage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_r($orders->dernierID_orders());

  3. #3
    Membre régulier
    Homme Profil pro
    PLM IT Consultant
    Inscrit en
    Novembre 2003
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : PLM IT Consultant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 202
    Points : 86
    Points
    86
    Par défaut
    Oui je l'appelle comme cela! Désolé de pas avoir mieux préciser. C'est bien un objet mais j'ai pas compris comme faire pour qu'il s'affiche vu que j'ai pas besoin de faire de boucle, il y a qu'une donnée dedans

  4. #4
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Il faut implémenter (et invoquer) une méthode toString() sur ton objet. Sinon, par défaut, c'est l'id de l'objet en mémoire qui s'affiche.

  5. #5
    Membre régulier
    Homme Profil pro
    PLM IT Consultant
    Inscrit en
    Novembre 2003
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : PLM IT Consultant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 202
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par Herode
    Il faut implémenter (et invoquer) une méthode toString() sur ton objet. Sinon, par défaut, c'est l'id de l'objet en mémoire qui s'affiche.
    et comment tu fais cela?

  6. #6
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Hmmm, j'ai peut-être mal répondu. Je parlais de toString() parce que j'avais vu un echo dans le code un peu plus haut...

    Si tu veux exprimer ton objet sous la forme d'une chaine de caractères, il faut que tu implémentes la fonction qui construit la chaine de caractères qui qui décrit ton objet au format qui t'intéresse. Mais si tu veux juste récupérer l'attribut de ton objet, alors... il faut y accéder et le lire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MonObjet {
      private $id;
      public function __construct( $id )
      { $this->id = $id; }
     
      public function toString()
      { return "Voici mon id : $this->id"; }
      public function getId() 
      { return $this->id; }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // -- Retrouve le dernier ID enregistré
    function dernierID_orders()
    {
      // si tu veux récupérer l'id
      return $this->bd->idDerniereLigne(pk_orders, orders)->getId();
    }
    ou ...->toString() si tu as besoin de la description de ton objet sous forme de chaîne de caractères.

    NB : toString() est un nom conventionnel, mais tu peux appeler ça comme tu veux...

  7. #7
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    NB bis : pour être tout à fait précis, la méthode qui écrit
    Object id #1
    quand tu essaye d'afficher directement ton objet est en fait une méthode "magique" __toString() qui est invoquée par défaut dans ces cas là.
    Normalement, tu devrais pouvoir surcharger cette méthode dans ta classe pour modifier le comportement. En pratique, je n'ai jamais réussi à faire marcher ça.

    [edit : j'en profite, j'ouvre un fil sur la question ici...]

  8. #8
    Membre régulier
    Homme Profil pro
    PLM IT Consultant
    Inscrit en
    Novembre 2003
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : PLM IT Consultant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 202
    Points : 86
    Points
    86
    Par défaut
    Alors j'ai trouvé une solution en modifiant ma fonction ID_derniereligne.

    Merci de vos aides précieuses.

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

Discussions similaires

  1. [POO] Signification d'une syntaxe
    Par spaukensen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/02/2008, 17h32
  2. Réponses: 22
    Dernier message: 16/08/2006, 13h11
  3. Ne comprends pas une exception SQL
    Par n@n¤u dans le forum Outils
    Réponses: 3
    Dernier message: 13/07/2006, 13h04
  4. Comprend pas une erreur
    Par vodevil dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2006, 04h00
  5. [FLASH MX2004] Je comprend pas la syntaxe {node:node}
    Par gchanteux dans le forum Flash
    Réponses: 1
    Dernier message: 05/07/2005, 11h43

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