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] Erreur avec $this


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 17
    Points
    17
    Par défaut [POO] Erreur avec $this
    Bonjour,

    Je créé actuellement une page pour la distribution des élèves en fonction de leurs écoles primaires afin de savoir dans quels collèges ils iront aux prochaines rentrées.

    J'ai repris l'application en court et j'avoue que voir tout ce code m'embrouille un peu parfois. J'ai ce message d'erreur quand j'éxécute ma page : Fatal error: Using $this when not in object context in D:\PHP\Workspace\coreji\htdocs\rapport\repartition_par_ecole_primaire.php on line 22


    Et voici la partie du code oú le problème se trouve.

    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
    class DataObjects_Fstatscol extends DB_DataObject 
    {
    private $_dboutils;
    }
     
    $this->_dboutils = new DBOutils($GLOBALS["_APP_COREJI_DSN"]);
     
     
     
    	$strSql = "select ep.EP_NOM, cla.CLA_LIB, cla.CLA_CODE, co.CO_NOM, co.CO_ABBR _
    				From CLASSE cla, CLASSE_CYCLEORIENTATION cco, CYCLEORIENTATION co, ECOLEPRIMAIRE ep _
    				where co.CO_ID=cco.FK_CO_ID and _
    	  			cla.CLA_ID=cco.FK_CLA_ID and _
    	  			ep.EP_ID=cla.FK_EP_ID";
     
    	$cccObj = $this->_dboutils->SQLExecute($strSql,"SELECT","cla_par_co");
     
    	//boucle sur le nombre d'école primaire
    	while ($row = $cccObj->fetchRow(MDB2_FETCHMODE_ASSOC)) {
    	//Remplit la table EP 
    		$dbdoMai->EP_NOM= $row["EP_NOM"];
    		$dbdoMai->CLA_LIB= $row["CLA_LIB"];
    		$dbdoMai->CLA_CODE= $row["CLA_CODE"];
    		$dbdoMai->CO_NOM= $row["CO_NOM"];
    		$dbdoMai->CO_ABBR= $row["CO_ABBR"];
      		$dbdoMai->insert();
    			}
    			$cccObj->free();
    			$dbdoMai->free();
    J'espère être assez claire dans mes explications. Voila un petit moment que je suis la dessus et je ne comprend pas trop comment régler le problème sachant que mon niveau de PHP est assez basique.

    Merci d'avance pour votre aide.

    P.S: ne tenez pas compte des commentaire dans le code, ils ne sont pas forcément à jour, désolé.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Lorsque tu écris $this c'est que tu te réfères à la classe en cours.

    Or dans ton code au moment ou tu l'écris tu as fini la déclaration de ta classe, si tu veux l'utiliser il te faut donc instancier un objet de ta classe.

    En revanche je ne comprend pas vraiment l'interet d'une classe héritant d'une autre et possédant un objet de sa classe mère

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par ratapapa
    Lorsque tu écris $this c'est que tu te réfères à la classe en cours.

    Or dans ton code au moment ou tu l'écris tu as fini la déclaration de ta classe, si tu veux l'utiliser il te faut donc instancier un objet de ta classe.

    En revanche je ne comprend pas vraiment l'interet d'une classe héritant d'une autre et possédant un objet de sa classe mère
    Si tu pouvais m'expliquer un peu plus en détail ce que tu ne trouve pas juste dans mon code cela me serai d'une grande aide.

    Je vois à peu près ce que tu veux dire mais pas au point d'en trouver une solution. Je ne demande pas non plus que tu me pose le code mais une explication un poil plus détaillé pour un débutant comme moi.

    Merci pour ton aide c'est très sympa.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Ce n'est pas tant que je n'ai pas voulu débugguer ton code mais plutot que je n'ai pas saisi ce que tu voulais en faire, donc j'ai évité d'interpréter au risque de t'envoyer sur une mauvaise piste.

    A mon avis ton problème ici vient d'avantage de l'analyse que de la façon de coder.

    Si tu pouvais en dire d'avantage sur ce que tu voudrais arriver à faire cela permettrait une aide plus perspicace

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Le but est d'afficher une liste avec par ligne une école primaire et voir les collèges qui y sont rattachés.

    C'est un tableau tout bête en fait mais je dois faire mon "select" depuis mon application car la requête n'existe pas dans ma base de données.

    Le developpeur qui était sur l'application avant a fait une page similaire mais avec d'autre données.

    Voici un aperçu. http://img441.imageshack.us/img441/2643/apercuze1.jpg

    Comme on peut voir sur cette page, ce sont les collèges qui sont lister en gras et dessous on voit les écoles primaire attachées.

    Le but de ma page à moi et de faire exactement l'inverse de celle dont j'ai mis un screen.

    Voila, j'espère avoir été assez claire.

  6. #6
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    salut,

    Je ne peux rien te garantir, mais comme ça, je dirais que tu essaies d'utiliser le pattern Decorator, qui permet d'ajouter de nouvelles fonctionnalités à ton appli,

    ta classe devrait plutot ressembler à ca :

    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
     
    <?php
    class DataObjects_Fstatscol extends DB_DataObject 
    {
    	private $_dboutils;
     
    	public function __construct (DB_DataObject $DBOutils)
    	{
    		//$this->_dboutils = new DBOutils ($GLOBALS["_APP_COREJI_DSN"]);
                    // plutot faire comme ca : 
                   $this->_dboutils = $DBOutils;
    	}
     
    	public function nouvelleFonctionnalite ()
    	{
     
    	$strSql = "select ep.EP_NOM, cla.CLA_LIB, cla.CLA_CODE, co.CO_NOM, co.CO_ABBR _
    				From CLASSE cla, CLASSE_CYCLEORIENTATION cco, CYCLEORIENTATION co, ECOLEPRIMAIRE ep _
    				where co.CO_ID=cco.FK_CO_ID and _
    	  			cla.CLA_ID=cco.FK_CLA_ID and _
    	  			ep.EP_ID=cla.FK_EP_ID";
     
    	$cccObj = $this->_dboutils->SQLExecute($strSql,"SELECT","cla_par_co");
     
    	//boucle sur le nombre d'école primaire
    	while ($row = $cccObj->fetchRow(MDB2_FETCHMODE_ASSOC)) {
    	//Remplit la table EP 
    		$dbdoMai->EP_NOM= $row["EP_NOM"];
    		$dbdoMai->CLA_LIB= $row["CLA_LIB"];
    		$dbdoMai->CLA_CODE= $row["CLA_CODE"];
    		$dbdoMai->CO_NOM= $row["CO_NOM"];
    		$dbdoMai->CO_ABBR= $row["CO_ABBR"];
      		$dbdoMai->insert();
    			}
    			$cccObj->free();
    			$dbdoMai->free();
    	}
    }
    ?>
    biensur c'est de la complète interprétation de code, je ne suis sur de rien ( ;


    sahid

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Désolé de ma réponse tardive mais le week end j'oubli le mot "Inernet"

    Merci beaucoup pour l'aide je suis pratiquement au bout de mon problème.

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

Discussions similaires

  1. Erreur avec this->maVariable
    Par Jolt0x dans le forum Langage
    Réponses: 12
    Dernier message: 03/10/2010, 19h05
  2. [POO] Erreur avec la fonction __toString()
    Par polothentik dans le forum Langage
    Réponses: 20
    Dernier message: 14/04/2008, 15h40
  3. [POO] Erreur avec setInterval / Pb POO
    Par rollbich dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/06/2007, 15h04
  4. [POO] Problème avec $this de PHP4 à PHP5
    Par c4l3m dans le forum Langage
    Réponses: 19
    Dernier message: 16/02/2007, 09h48
  5. [POO] Probleme avec $this
    Par cubepiege dans le forum Langage
    Réponses: 5
    Dernier message: 01/03/2006, 15h39

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