Fatal error: Using $this when not in object context in C...
papyclic
Messages postés
446
Date d'inscription
Statut
Membre
Dernière intervention
-
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de m'initier à la POO, j'ai construit la connexion à ma BDD, ensuite une class qui sert à enregistrer les membres et j'ai cette erreur je crois comprendre pourquoi mais je n'arrive pas à le résoudre, peut-être que $this n'est pas définit dans un objet?
Pouvez-vous me donner quelques explication qui pourrais m'être utile s'ils vous plait.
En vous remerciant.
L'erreur à la ligne 5
ma class Inscription
ma class Db et mon constructeur
mon formulaire
inscription.php
Je suis en train de m'initier à la POO, j'ai construit la connexion à ma BDD, ensuite une class qui sert à enregistrer les membres et j'ai cette erreur je crois comprendre pourquoi mais je n'arrive pas à le résoudre, peut-être que $this n'est pas définit dans un objet?
Pouvez-vous me donner quelques explication qui pourrais m'être utile s'ils vous plait.
En vous remerciant.
L'erreur à la ligne 5
Fatal error: Using $this when not in object context in C
ma class Inscription
class Inscription { public function enregistrer() { $req = $this->db->prepare('SELECT COUNT(pseudo) AS nbre_pseudo FROM tb_adherent WHERE pseudo = ?'); $req->execute(array($_POST['pseudo'])); $result = $req->fetch(); if(empty($_POST['nom']) OR empty($_POST['prenom']) OR empty($_POST['pseudo']) OR empty($_POST['password']) OR empty($_POST['debut'])) { header('Location: index.php?error=empty'); } else if($result['nbre_pseudo'] > 0) { header('Location: index.php?error=pseudo_exist'); } else { $req->closeCursor(); $nom = Security::clean($_POST['nom']); $prenom = Security::clean($_POST['prenom']); $email = Security::clean($_POST['email']); $naissance = Security::clean($_POST['naissance_3']) ? trim($_POST['naissance_3']) . '-' . trim($_POST['naissance_2']) . '-' . trim($_POST['naissance_1']) : ''; $fixe = Security::clean($_POST['fixe']); $mobile = Security::clean($_POST['mobile']); $adresse = Security::clean($_POST['adresse']); $lieu_dit = Security::clean($_POST['lieu_dit']); $code_postal = Security::clean($_POST['code_postal']); $ville = Security::clean($_POST['ville']); $pseudo = Security::clean($_POST['pseudo']); $password = Security::clean(Security::hash($_POST['password'])); $actif = $_POST['actif']; $debut = Security::clean($_POST['debut']); $fin = Security::clean($_POST['fin']); $req = $this->db->prepare('INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, pseudo, password, actif, debut, fin) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :pseudo, :password, :actif, :debut, :fin)'); $req->execute(array( 'nom' => $nom, 'prenom' => $prenom, 'email' => $email, 'naissance' => $naissance, 'fixe' => $fixe, 'mobile' => $mobile, 'adresse' => $adresse, 'lieu_dit' => $lieu_dit, 'code_postal' => $code_postal, 'ville' => $ville, 'pseudo' => $pseudo, 'password' => $password, 'actif' => $actif, 'debut' => $debut, 'fin' => $fin //$resultat -> bindParam(':pseudo', $identifiant); )); $req->closeCursor(); header('Location: index.php?info=enregistrer'); } } }
ma class Db et mon constructeur
class Db { private $db; public function __construct() { $this->db = new Connection(); $this->db = $this->db->connect(); } }
mon formulaire
inscription.php
<?php if(isset($_POST['send'])) { extract($_POST); echo Inscription::enregistrer(); if(isset($_GET['error']) AND $_GET['error'] = 'empty') { echo 'Veuillez remplir correctement le formulaire'; } } ?> <div id="content"> <form id="formulaire" action="" method="post"> <fieldset> <legend>Ajouter un membre</legend> <table cellpadding="0" cellspacing="3"> <tr> <th colspan="6">Coordonné :</th> </tr> <tr> <td width="20%">Nom :</td> <td width="30%"><input name="nom" class="content_input" size="30" type="text" value=""/></td> <td width="20%">Prénom :</td> <td width="30%"><input name="prenom" class="content_input" size="30" type="text" value=""/></td> </tr> <tr> <td width="20%">Adresse :</td> <td width="30%"><input name="adresse" class="content_input" size="30" type="text" value=""/></td> <td width="20%">Lieu Dit :</td> <td width="30%"><input name="lieu_dit" class="content_input" size="30" type="text" value=""/></td> </tr> <tr> <td width="20%">Code Postale :</td> <td width="30%"><input name="code_postal" class="content_input" size="30" type="text" value=""/></td> <td width="20%">Ville :</td> <td width="30%"><input name="ville" class="content_input" size="30" type="text" value=""/></td> </tr> <tr> <th colspan="3">Contact :</th> </tr> <tr> <td width="20%"><img src="image/fixe.png" alt="Téléphone fixe" title="Téléphone fixe" height="22" width="22"/> Téléphone fixe :</td> <td width="30%"><input name="fixe" class="content_input" size="30" type="text" value=""/></td> <td width="20%"><img src="image/mobile.jpg" alt="Téléphone mobile" title="Téléphone mobile" height="22" width="22"/> Téléphone mobile :</td> <td width="30%"><input name="mobile" class="content_input" size="30" type="text" value=""/></td> </tr> <tr> <td width="20%"><img src="image/mail.png" alt="Email" title="Email" height="22" width="22"/> Adresse mail :</td> <td width="30%"><input name="email" class="content_input" size="30" type="text" value=""/></td> <td width="20%"></td> <td width="30%"></td> </tr> <tr> <th colspan="4">Informations supplémentaires :</th> </tr> <tr> <td width="20%">Date de Naissance :</td> <td width="30%" id="naissance" name="naissance"> <input name="naissance_1" class="content_input" type="text" value="" size="2" maxlength="2"/> <input name="naissance_2" class="content_input" type="text" value="" size="2" maxlength="2"/> <input name="naissance_3" class="content_input" type="text" value="" size="4" maxlength="4"/> jj/mm/aaaa </td> <td width="20%"><img src="image/login.png" alt="Login" title="Login" height="22" width="22"/> Login :</td> <td width="30%"><input name="pseudo" class="content_input" size="30" type="text" value=""/></td> </tr> <tr> <td width="20%"></td> <td width="30%"></td> <td width="20%"><img src="image/password.png" alt="Mot de passe" title="Mot de passe" id="image_pwd" height="22" width="22"/> Mot de passe :</td> <td width="30%"><input name="password" class="content_input" size="30" type="text" value=""/></td> </tr> <tr> <td width="20%">Actif :</td> <td width="30%"><input name="actif" class="content_input" size="30" type="checkbox"/></td> <td width="20%"></td> <td width="30%"></td> </tr> <tr> <td width="20%">Début :</td> <td width="30%"><input name="debut" class="content_input" size="4" type="text" value=""/></td> <td width="20%"></td> <td width="30%"></td> </tr> <tr> <td width="20%">Fin :</td> <td width="30%"><input name="fin" class="content_input" size="4" type="text" value=""/></td> <td width="20%"></td> <td width="30%"></td> </tr> </table> <!--#######################################################################################################################################--> <input type="hidden" name="send"/> <input type="submit" class="submit" value="Enregistrer"/> </fieldset> </form> </div>
A voir également:
- Fatal error: Using $this when not in object context in C...
- Fan error lenovo - Forum Refroidissement
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Playback error reconnect in 3s (1/5) francais - Forum Box et Streaming vidéo
- Error 1962 ✓ - Forum PC fixe
- A javascript error occurred in the main process - Forum Matériel & Système
3 réponses
Bonjour,
Tu utilises $this->db dans ta class ... sauf que this fait référence à La classe où tu te trouves... et que dedans.. il n'existe pas de db...
Je pense que tu as oublié de mettre un EXTEND vers ta class DB.
Et qu'ensuite, au lieu d'utiliser this .. il faudrait utiliser Parent::
Tu utilises $this->db dans ta class ... sauf que this fait référence à La classe où tu te trouves... et que dedans.. il n'existe pas de db...
Je pense que tu as oublié de mettre un EXTEND vers ta class DB.
Et qu'ensuite, au lieu d'utiliser this .. il faudrait utiliser Parent::
class Inscription extends Db{ public function enregistrer() { $req = parent::db->prepare('SELECT COUNT(pseudo) AS nbre_pseudo FROM tb_adherent WHERE pseudo = ?'); $req->execute(array($_POST['pseudo']));
Bonjour
Merci de ta réponse, malheureusement j'ai essayé comme tu me l'a dit mais ça me retourne une nouvelle erreur
en plus j'ai suivi pas mal de tutos vidéos et je ne comprends pas cette connexion qui ne veux pas fonctionner.
Merci de ta réponse, malheureusement j'ai essayé comme tu me l'a dit mais ça me retourne une nouvelle erreur
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C...
class Inscription extends Db{ public function enregistrer() { $req = parent::db->prepare('SELECT COUNT(pseudo) AS nbre_pseudo FROM tb_adherent WHERE pseudo = ?'); $req->execute(array($_POST['pseudo']));
en plus j'ai suivi pas mal de tutos vidéos et je ne comprends pas cette connexion qui ne veux pas fonctionner.