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 :

Using $this when not in object context


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut Using $this when not in object context
    bonjour,
    voila je voulais afficher les nouveautes de mon site en php5.

    ce que j avais fait:
    j ai rajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private $_nouveautes = array();
    et j'ai cette erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Using $this when not in object context in C:\wamp\www\AchatEnfolie2\classes\class.produit.php on line 521

    a cette endroit:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public  function afficherLesNouveautes(){
    	foreach ($this->_nouveautes as $nouveaute)
    	{
    	echo $nouveaute;
    	}

    je pense que c'est le faite que la le tableau est vide? je doit le remplir avec la class nouveautes?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class nouveaute {
     
        private $_id;
        private $_nom;
        private $_illustration; //chemin vers illustration sur le serveur
     
     
        public function __toString() {
            $chaine = "Nouveaut&eacute; :<br>";
            $chaine .= $this -> _nom."<br>";
            $chaine .= "<table><tr><td><img src=\"".$this -> _illustration."\"></td></tr></table>";
            return $chaine;
        }
    }
    que j'ai rajouter?

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Points : 160
    Points
    160
    Par défaut
    ta variable $_nouveautes et méthode afficherLesNouveautes sont bien dans une classe???

    Tu pourrais publier ta class complète stp???

    Car la comme ca, difficile de débugger le tout...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Points : 91
    Points
    91
    Par défaut
    C'est pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public  function afficherLesNouveautes(){
    	foreach ($nouveautes as $nouveaute)
    	{
                 	echo $nouveaute;
    	}

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rori Voir le message
    C'est pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public  function afficherLesNouveautes(){
    	foreach ($nouveautes as $nouveaute)
    	{
                 	echo $nouveaute;
    	}
    Dans ce contexte, $nouveautes n'existerait pas.
    Montre nous ta classe complète s'il te plait.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par yotsumi Voir le message
    Dans ce contexte, $nouveautes n'existerait pas.
    Montre nous ta classe complète s'il te plait.
    Oui, faute de frappe : $_nouveautes

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pareil ^^
    Ah moins que ce soit une variable globale (ce qui serait une erreur de conception), $_nouveautes ne peut exister à cet endroit ($this->_nouveautes a plus de chance de fonctionner).
    On pourra en dire plus avec le code complet

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut
    BONJOUR,

    voici ma class produit:
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    <?php
     
    /*
     * Drapeau pour signaler un produit de haut de gamme.
     *
     * @const HIGH_RANGE
     * @var String
     * @access public
     */
    define('HIGH_RANGE', 'haute');
     
    /**
     * Drapeau pour signaler un produit de moyenne gamme
     *
     * @const NORMAL_RANGE
     * @var String
     * @access public
     */
    define('NORMAL_RANGE', 'moyenne');
     
    /**
     * Drapeau pour signaler un produit bas de gamme
     *
     * @const POOR_RANGE
     * @var String
     * @access public
     */
    define('POOR_RANGE', 'basse');
     
     
    /**
     * Produit
     * --------------------------------
     *
     */
    class Produit  {
     
    	const TB_PREFIX = 'achatsenfolie__';
        /**
         * Nom de la table utilisée
         * @var String
         */
        const TB_NAME = 'PRODUIT';
     
     
        /**
         * Numéro d'identifiant
         * @access private
         * @var Integer
         */
        private $id = 0;
     
        /**
         * Nom
         * @access private
         * @var String
         */
        private $nom = null;
     
        /**
         * Description
         * @access private
         * @var String
         */
        private $description = null;
     
        /**
         * Prix
         * @access private
         * @var Float
         */
        private $prix = 0.0;
     
        /**
         * Gamme (basse, moyenne, haute)
         * @access private
         * @var String
         */
        private $gamme = 'moyenne';
     
        /**
         * Date de dernière modification
         * @access private
         * @var Integer
         */
        private $date_modification = 0;
     
        /**
         * Date de création
         * @access private
         * @var Integer
         */
        private $date_creation = 0;
     
        /**
         * S'affiche dans la liste des nouveautés
         * @access private
         * @var Boolean
         */
        private $afficher_Dans_Nouveautes = true;
     
     
     
     
     
        /**
         * Est encore disponible
         * @access private
         * @var Boolean
         */
        private $est_visible = true;
        /**
         * Est encore disponible
         * @access private
         * @var Boolean
         */
        private $est_disponible = true;
     
     
        /**
         * Categorie dans laquelle est affiché le produit
         * @var Categorie
         */
        private $id_categorie = null;
    	    /**
         * illsutration est affiché du produit
         * @var Categorie
         */
        private $id_illustration = null;
     
    	private $_nouveautes = array();
     
     /**
         * Constructor
         * @access protected
         */
         public function __construct($id=0,$nom = "sans titre",$description = null,$prix=0, $gamme= null, $date_modification=0,$date_creation = 0,
    	$afficher_Dans_Nouveautes=1,$est_visible=1,$est_disponible=1,$id_categorie=NULL,$id_illustration=NULL ) {
    		 $this->id = $id;
             $this->nom = $nom;
             $this->description = $description;
    		 $this->prix = $prix;
             $this->gamme = $gamme;
    		 $this->date_modification = $date_modification;
             $this->date_creation = $date_creation;
     
             $this->afficher_Dans_Nouveautes = $afficher_Dans_Nouveautes;
    		 $this->est_visible = $est_disponible;
             $this->est_disponible = $est_disponible;
    		 $this->id_categorie = $id_categorie;
    		$this->id_illustration = $id_illustration;
         }
     
     
     
     
     /*Recupere informations tous les sous categories par id*/
    	public  function findProduitById($id){
    		$req ="SELECT * from ".self::TB_PREFIX."produit where id_categorie=".$id."";
    		$res = mysql_query($req) or die ('Erreur : '.mysql_error());
    		$ret = array();
     
    		while( $data = mysql_fetch_object($res) ) {
    			$ret[] = new Produit( 
    			$data->id,
    			$data->nom,
    			$data->description,
    			$data->prix,
    			$data->gamme,
    			$data->date_modification,
    			$data->date_creation,
    			$data->afficher_dans_nouveautes,
    			$data->est_visible,
    			$data->est_disponible,
    			$data->id_categorie,
    			$data->id_illustration
     
    			);
    		}
     
    		if ( !empty($ret) )
    		return $ret;
     
    		return null;
    	}
     
    	    /**
         * Indique si le produit s'affiche dans les nouveautées ou non
         *
         * @access public
         * @return boolean
         */
     
    	public  function afficherLesNouveautes(){
    	foreach ($this->_nouveautes as $nouveaute)
    	{
    	echo $nouveaute;
    	}
    	}
     
     
     
     
     
    }
     
    ?>
    voici ma class nouveautes:
    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
     
    <?php
     
    class nouveaute extends Produit {
     
        private $_id;
        private $_nom;
        private $_illustration; //chemin vers illustration sur le serveur
     
     
        public function __toString() {
            $chaine = "Nouveaut&eacute; :<br>";
            $chaine .= $this -> _nom."<br>";
            $chaine .= "<table><tr><td><img src=\"".$this -> _illustration."\"></td></tr></table>";
            return $chaine;
        }
    }
     
     
    ?>
    on m'a conseiller de faire un heritage, je n'ai plus l erreur mais rien ne s'affiche a l'ecran, si je suis ca doit je faire une table nouveaute dans ma base sql?
    MERCI.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2014, 09h33
  2. [POO] Using $this when not in object context
    Par rugueux dans le forum Langage
    Réponses: 4
    Dernier message: 26/09/2011, 14h49
  3. [PHP 5.0] [POO] Using $this when not in object context
    Par Gaetch dans le forum Langage
    Réponses: 10
    Dernier message: 06/03/2010, 11h35
  4. Réponses: 7
    Dernier message: 16/07/2009, 08h13
  5. Fatal error: Using $this when not in object context
    Par lavande dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2008, 20h17

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