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] P. O. O.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 129
    Points : 97
    Points
    97
    Par défaut [POO] P. O. O.
    Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition commande of the object you are trying to operate on was loaded _before_ the session was started in /home/apb/public_html/html/commande.php on line 6

    commande.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
      session_start();
      if ($_SESSION["rang"]>0) {
        if (isset($_GET["add"])) {
          $add = intval($_GET["add"]);
          $_SESSION["commande"]->addProduit($add, 1);
          $_SESSION["commande"]->affiche();
        }
      } else {
        echo '<center><b>Désolé, vous devez être inscrit et connecté pour passe une commande.</b></center>';
    }
    ?>
    Pourtant, dans mon index.php, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION["commande"] = new Commande();

  2. #2
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    Je soupçonne que tu na pas inclue la class de ton objet enregistré dans ta session avant le session_start

  3. #3
    Membre habitué Avatar de Aliosha
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 138
    Points
    138
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION["commande"]->addProduit($add, 1);
    ?
    J'sais pas comment ça marche, les identifiants SESSION, mais je pense pas qu'on puisse ajouter un truc à partir d'une syntaxe de type $_SESSION['pouet']->fonction();


  4. #4
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Le message d'erreur est clair, pourtant
    Il faut que tu importe ta classe avant de faire ton session_start.
    Tu aura donc un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    include("classes/commands.class.php");
    session_start();
    ...
    edti : doublement grillé, mais j'ai raison

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 129
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par zulkifli
    Je soupçonne que tu na pas inclue la class de ton objet enregistré dans ta session avant le session_start
    Sûrement, car je vois pas de quoi tu parles. Tu peux t'expliquer stp.

    Si c'est le include("commande.class.php"), je l'avais bien oublié, mais ça marche pas non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
      include_once("includes/commande.class.php");
      session_start();
      if ($_SESSION["rang"]>0) {
        if (isset($_GET["add"])) {
          $add = intval($_GET["add"]);
          $_SESSION["commande"]->addProduit($add, 1);
          $_SESSION["commande"]->affiche();
        }
      } else {
        echo '<center><b>Désolé, vous devez être inscrit et connecté pour passe une commande.</b></center>';
      }
    ?>

  6. #6
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    haltabush l'a très bien reexpliqué

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par jpean.net
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
      include_once("includes/commande.class.php");
      session_start();
      if ($_SESSION["rang"]>0) {
        if (isset($_GET["add"])) {
          $add = intval($_GET["add"]);
          $_SESSION["commande"]->addProduit($add, 1);
          $_SESSION["commande"]->affiche();
        }
      } else {
        echo '<center><b>Désolé, vous devez être inscrit et connecté pour passe une commande.</b></center>';
      }
    ?>
    Je ne vois pas d'instantiation dans ton code... (pas de New)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 129
    Points : 97
    Points
    97
    Par défaut
    ok, c bon, encore une faute d'inatention...

    Je débute avec la POO PHP et je pensais pas à ce que l'erreur soit ailleurs

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 129
    Points : 97
    Points
    97
    Par défaut
    c'est normal, l'instanciation se fait lors de la connexion du membre. bien plus tôt dans le index.php

  10. #10
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Tu as donc dû faire ton inclusion à ce moment.
    En règle générale, il faut inclure les classes avant de les instantier.

  11. #11
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Citation Envoyé par jml94
    Tu as donc dû faire ton inclusion à ce moment.
    En règle générale, il faut inclure les classes avant de les instantier.
    :+1:
    J'ajouterais qu'il me semble que le session_start réinstancie tous les objets, d'où le fait que la classe doit être incluse avant.

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

Discussions similaires

  1. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 15h53
  2. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  3. Réponses: 13
    Dernier message: 28/08/2004, 18h43
  4. [langage] Pb POO perl
    Par loothoof dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 12h08
  5. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46

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