Héritage d'une class
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 face d'un soucis de compréhension. Je débute dans la POO et c'est mes 2 premières class en POO alors soyer indulgent à mon égard.
J'ai créé un fichier membre.php
un autre fichier Admin.php
un autre fichier qui me permet d'enregistrer les membres
ça me renvoi ce message d'erreur ça concerne le fichier register.php et je suis presque sur que ça proviens de l'héritage.
Merci beaucoup de votre aide.
Membre.php
Admin.php
register.php
Je suis en face d'un soucis de compréhension. Je débute dans la POO et c'est mes 2 premières class en POO alors soyer indulgent à mon égard.
J'ai créé un fichier membre.php
un autre fichier Admin.php
un autre fichier qui me permet d'enregistrer les membres
ça me renvoi ce message d'erreur ça concerne le fichier register.php et je suis presque sur que ça proviens de l'héritage.
Merci beaucoup de votre aide.
Fatal error: Call to undefined method Membre::insert() in C........
Membre.php
<?php class Membre { //Tous les Attributs (données membres), il s'agit des données représentant l'état de l'objet doivent être en privé. private $id_membre; private $nom; private $prenom; private $email; private $naissance; private $fixe; private $mobile; private $adresse; private $lieu_dit; private $code_postal; private $ville; private $username; private $password; //variable de connexion private static $con; //Appel à la connexion public function __construct() { $db = connexion::getInstance(); $this->con = $db->getDbh(); } ################################################################################################################### //Les méthodes (parfois appelées fonctions membres), il s'agit des opérations applicables aux objets. public function setNom($nom) { $this->nom = trim($nom); } public function setPrenom($prenom) { $this->prenom = trim($prenom); } public function setEmail($email) { $this->email = trim($email); } public function setNaissance($naissance) { $this->naissance = trim($naissance); } public function setFixe($fixe) { $this->fixe = trim($fixe); } public function setMobile($mobile) { $this->mobile = trim($mobile); } public function setAdresse($adresse) { $this->adresse = trim($adresse); } public function setLieuDit($lieu_dit) { $this->lieu_dit = trim($lieu_dit); } public function setCodePostal($code_postal) { $this->code_postal = trim($code_postal); } public function setVille($ville) { $this->ville = trim($ville); } public function setUsername($username) { $this->username = trim($username); } public function setPassword($password) { $this->password = trim($password); } ################################################################################################################### public function getNom() { return $this->nom; } public function getPrenom() { return $this->prenom; } public function getEmail() { return $this->email; } public function getNaissance() { return $this->naissance; } public function getFixe() { return $this->fixe; } public function getMobile() { return $this->mobile; } public function getAdresse() { return $this->adresse; } public function getLieuDit() { return $this->lieu_dit; } public function getCodePostal() { return $this->code_postal; } public function getVille() { return $this->ville; } public function getUsername() { return $this->username; } public function getPassword() { return $this->password; } ################################################################################################################### }
Admin.php
<?php class Admin extends Membre { private $actif; private $debut; private $fin; ################################################################################################################### public function setActif($actif) { $this->actif = trim($actif); } public function setDebut($debut) { $this->debut = trim($debut); } public function setFin($fin) { $this->fin = trim($fin); } ################################################################################################################### public function getActif() { return $this->actif; } public function getDebut() { return $this->debut; } public function getFin() { return $this->fin; } ################################################################################################################### public function insert() { $req = self::$db->prepare('INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, username, password) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :username, :password, :actif, :debut, :fin)'); $req->bindParam(':nom', $this->nom, PDO::PARAM_STR); $req->bindParam(':prenom', $this->prenom, PDO::PARAM_STR); $req->bindParam(':email', $this->email, PDO::PARAM_STR); $req->bindParam(':naissance', $this->naissance, PDO::PARAM_STR); $req->bindParam(':fixe', $this->fixe, PDO::PARAM_STR); $req->bindParam(':mobile', $this->mobile, PDO::PARAM_STR); $req->bindParam(':adresse', $this->adresse, PDO::PARAM_STR); $req->bindParam(':lieu_dit', $this->lieu_dit, PDO::PARAM_STR); $req->bindParam(':code_postal', $this->code_postal, PDO::PARAM_STR); $req->bindParam(':ville', $this->ville, PDO::PARAM_STR); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->bindParam(':password', $this->password, PDO::PARAM_STR); $req->bindParam(':actif', $this->actif, PDO::PARAM_STR); $req->bindParam(':debut', $this->debut, PDO::PARAM_STR); $req->bindParam(':fin', $this->fin, PDO::PARAM_STR); $req->execute(); } ################################################################################################################### }
register.php
<?php if(!empty($_POST)) { $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']); $username = Security::clean($_POST['username']); $password = Security::clean($_POST['password']); $actif = $_POST['actif']; $debut = Security::clean($_POST['debut']); $fin = Security::clean($_POST['fin']); if(empty($nom) || empty($prenom) || empty($username) || empty($password) || empty($actif) || empty($debut)) { $errors[] = 'Veuillez entrer le Nom, Prénom, Login, le Mot de passe, Actif, Date de Début'; } else { $password = Security::hash($password); $user = new Membre(); $user->setNom($nom); $user->setPrenom($prenom); $user->setEmail($email); $user->setNaissance($naissance); $user->setFixe($fixe); $user->setMobile($mobile); $user->setAdresse($adresse); $user->setLieuDit($lieu_dit); $user->setCodePostal($code_postal); $user->setVille($ville); $user->setUsername($username); $user->setPassword($password); $user->setActif($actif); $user->setDebut($debut); $user->setFin($fin); $user->insert(); if(preg_match('#(\d{4})-(\d{1,2})-(\d{1,2})#is', $user->getNaissance(), $match)) $date = array( 1 => $match[3], 2 => $match[2], 3 => $match[1] ); header('Location: index.php?body=register&type=compte'); exit(); } echo output_errors($errors); } ?> <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="username" 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="submit" class="submit" value="Enregistrer"/> </fieldset> </form> </div>
18 réponses
Salut,
Le message d'erreur est explicite : tu appelles la méthode insert() de la classe Membre alors que celle-ci n'existe pas (en effet, la méthode insert() appartient à la classe Admin).
Puisque ta classe Admin hérite de Membre, déplaces la méthode insert() dans la classe Membre, tu pourras ainsi l'appeler depuis la classe Membre et depuis la classe Admin.
Bonne journée
Le message d'erreur est explicite : tu appelles la méthode insert() de la classe Membre alors que celle-ci n'existe pas (en effet, la méthode insert() appartient à la classe Admin).
Puisque ta classe Admin hérite de Membre, déplaces la méthode insert() dans la classe Membre, tu pourras ainsi l'appeler depuis la classe Membre et depuis la classe Admin.
Bonne journée
Bonjour,
Merci pour ton retour, j'ai bien compris comme dirait l'autre, ça c'est fait.
Ca me retourne un autre message d'erreur.
Cela concerne la class Membre de la méthode insert.
Je ne comprend pas, je te remercie encore une fois de ton aide.
Merci pour ton retour, j'ai bien compris comme dirait l'autre, ça c'est fait.
Ca me retourne un autre message d'erreur.
Fatal error: Access to undeclared static property: Membre::$db in C.......
Cela concerne la class Membre de la méthode insert.
Je ne comprend pas, je te remercie encore une fois de ton aide.
Bonjour,
Ce que je ne comprend pas c'est que l'erreur me dit en gros que $db n'existe nul part dans la classe, donc c'est surement mon appel à la connexion qui tourne pas rond, mais je ne vois vraiment pas comment résoudre cela.
Merci de votre aide.
Ce que je ne comprend pas c'est que l'erreur me dit en gros que $db n'existe nul part dans la classe, donc c'est surement mon appel à la connexion qui tourne pas rond, mais je ne vois vraiment pas comment résoudre cela.
Merci de votre aide.
//variable de connexion private static $con; //Appel à la connexion public function __construct() { $db = connexion::getInstance(); $this->con = $db->getDbh(); }
Ta propriété $con est déclarée statique : https://www.php.net/manual/fr/language.oop5.static.php
On ne peut donc pas y accéder à travers une instance ($this->con) mais seulement à travers la classe elle même (Membre::$con ou self::$con).
Attention également dans la méthode insert() tu appel self::$db alors que celle-ci n'existe pas, à corriger en appelant self::$con
Bonne journée
On ne peut donc pas y accéder à travers une instance ($this->con) mais seulement à travers la classe elle même (Membre::$con ou self::$con).
private static $con; //Appel à la connexion public function __construct() { $db = connexion::getInstance(); self::$con = $db->getDbh(); }
Attention également dans la méthode insert() tu appel self::$db alors que celle-ci n'existe pas, à corriger en appelant self::$con
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Merci de ton retour pour me venir en aide, maintenant un nouveau message d'erreur me disant que j'appel la fonction prepare sur un non object......
j'ai essayé de résoudre cela mais je ne vois vraiment pas.
Merci une nouvelle fois de ton aide.
Merci de ton retour pour me venir en aide, maintenant un nouveau message d'erreur me disant que j'appel la fonction prepare sur un non object......
Fatal error: Call to a member function prepare() on a non-object in C
j'ai essayé de résoudre cela mais je ne vois vraiment pas.
Merci une nouvelle fois de ton aide.
Bonjour
Toujours dans l'impasse, s'il te plait un petit coup de main j'ai toujours cette erreur qui me dit.
j'appel la fonction prepare sur un non object......
Merci beaucoup
Toujours dans l'impasse, s'il te plait un petit coup de main j'ai toujours cette erreur qui me dit.
j'appel la fonction prepare sur un non object......
Fatal error: Call to a member function prepare() on a non-object in C
Merci beaucoup
La variable depuis laquelle tu appelles la méthode prepare n'est pas un objet :
- soit tu utilises la mauvaise variable
- soit ta connexion a échouée
Montre nous la ligne qui provoque cette erreur et ton code de connexion.
- soit tu utilises la mauvaise variable
- soit ta connexion a échouée
Montre nous la ligne qui provoque cette erreur et ton code de connexion.
Bonjour
C'est la méthode insert
Ma viable de connexion et mon appel à la connexion
Tous cela dans le même fichier Membre.php
C'est la méthode insert
public function insert() { $req = self::$con->prepare('INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, username, password) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :username, :password, :actif, :debut, :fin)'); $req->bindParam(':nom', $this->nom, PDO::PARAM_STR); $req->bindParam(':prenom', $this->prenom, PDO::PARAM_STR); $req->bindParam(':email', $this->email, PDO::PARAM_STR); $req->bindParam(':naissance', $this->naissance, PDO::PARAM_STR); $req->bindParam(':fixe', $this->fixe, PDO::PARAM_STR); $req->bindParam(':mobile', $this->mobile, PDO::PARAM_STR); $req->bindParam(':adresse', $this->adresse, PDO::PARAM_STR); $req->bindParam(':lieu_dit', $this->lieu_dit, PDO::PARAM_STR); $req->bindParam(':code_postal', $this->code_postal, PDO::PARAM_STR); $req->bindParam(':ville', $this->ville, PDO::PARAM_STR); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->bindParam(':password', $this->password, PDO::PARAM_STR); $req->bindParam(':actif', $this->actif, PDO::PARAM_STR); $req->bindParam(':debut', $this->debut, PDO::PARAM_STR); $req->bindParam(':fin', $this->fin, PDO::PARAM_STR); $req->execute(); }
Ma viable de connexion et mon appel à la connexion
//variable de connexion private static $con; //Appel à la connexion public function __construct() { $db = connexion::getInstance(); $this->con = $db->getDbh(); }
Tous cela dans le même fichier Membre.php
D'où vient
Comme précisé dans mon précédent message, tu ne peux pas affecter une variable statique via l'instance de la classe :
$db = connexion::getInstance();?
Comme précisé dans mon précédent message, tu ne peux pas affecter une variable statique via l'instance de la classe :
self::$con = $db->getDbh();
Bonjour
Dans ma class connexion
l'instance de la class connexion
et les méthodes
Les autres attributs de connexion à ma BDD je ne les ai pas mis afin d'éviter d'alourdir l'envoi.
Merci de ton coup de main avec la connexion je suis faché
Dans ma class connexion
l'instance de la class connexion
private static $instance;
et les méthodes
Les autres attributs de connexion à ma BDD je ne les ai pas mis afin d'éviter d'alourdir l'envoi.
private static $dbh; /*** Lance la connexion à la base de donnée en le mettant * dans un objet PDO qui est stocké dans la variable $dbh * @access private */ private function __construct() { try { $this->dbh = new PDO ( $this->type.':host='.$this->host.'; dbname='.$this->dbname, $this->username, $this->password, array(PDO::ATTR_PERSISTENT => true) ); $req = "SET NAMES UTF8"; $result = $this->dbh->prepare($req); $result->execute(); } catch(PDOException $e) { echo "<div class='error'>Erreur !: ".$e->getMessage()."</div>"; die(); } } /*** Regarde si un objet connexion a déjà été instancier, * si c'est le cas alors il retourne l'objet déjà existant * sinon il en créer un autre. * @return $instance */ public static function getInstance() { if (!self::$instance instanceof self) { self::$instance = new self; } return self::$instance; } /*** Permet de récuprer l'objet PDO permettant de manipuler la base de donnée * @return $dbh */ public function getDbh() { return $this->dbh; }
Merci de ton coup de main avec la connexion je suis faché
Par défaut les erreurs PDO ne sont pas affichées (ERRMODE_SILENT), il faut modifier les options dans le constructeur pour les afficher : https://www.php.net/manual/fr/pdo.error-handling.php
Avec mysql, tu peux également passer la requête "SET NAMES utf8" dans le paramètres PDO::MYSQL_ATTR_INIT_COMMAND.
Essaye de corriger le constructeur de ta classe comme ceci :
Tu devrais alors voir les erreurs sql.
Avec mysql, tu peux également passer la requête "SET NAMES utf8" dans le paramètres PDO::MYSQL_ATTR_INIT_COMMAND.
Essaye de corriger le constructeur de ta classe comme ceci :
private function __construct() { try { $this->dbh = new PDO ( $this->type.':host='.$this->host.';dbname='.$this->dbname, $this->username, $this->password, array( PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ) ); } catch(PDOException $e) { echo "<div class='error'>Erreur !: ".$e->getMessage()."</div>"; die(); } }
Tu devrais alors voir les erreurs sql.
Bonjour
Même en modifiant ma class comme tu me l'a suggéré toujours la même erreur.
Même en modifiant ma class comme tu me l'a suggéré toujours la même erreur.
Fatal error: Call to a member function prepare() on a non-object in C
Tu as bien modifier $this->con par self::$con dans le constructeur de la classe Membre ?
Sinon essaye d'utiliser uniquement ta classe connexion pour vérifier que celle-ci fonctionne :
Sinon essaye d'utiliser uniquement ta classe connexion pour vérifier que celle-ci fonctionne :
<?php require 'connexion.php'; // chemin vers la classe connexion $db = connexion::getInstance(); $sql = 'SELECT nom FROM tb_adherent LIMIT 10'; foreach ($db->query($sql) as $row) { echo $row[0] . '<br />'; }
Alors voilà où j'en suis. Avec la requète que tu m'as fait essayé ça me retourne cette erreur
sinon avec
self::$con
dans le constructeur de la classe Membre
Aucune erreur retournée mais aucun insert dans la BDD
Je suis vraiment perdu perdu..
Merci
Fatal error: Call to undefined method connexion::query() in C:
sinon avec
self::$con
dans le constructeur de la classe Membre
Aucune erreur retournée mais aucun insert dans la BDD
Je suis vraiment perdu perdu..
Merci
Effectivement mon dernier code de test contient une erreur car ta classe connexion ne renvoie pas l'instance PDO depuis le constructeur mais via la méthode getDbh(). Donc une fois corrigé tu peux tester ceci pour vérifier que ta classe connexion fonctionne :
Ajoute ce code à la fin de ta méthode insert pour vérifier si l'insert est bien effectué :
<?php require 'connexion.php'; // chemin vers la classe connexion $connexion = connexion::getInstance(); $db = $connexion->getDbh(); $sql = 'SELECT nom FROM tb_adherent LIMIT 10'; foreach ($db->query($sql) as $row) { echo $row[0] . '<br />'; }
Ajoute ce code à la fin de ta méthode insert pour vérifier si l'insert est bien effectué :
public function insert() { $req = self::$con->prepare('INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, username, password) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :username, :password, :actif, :debut, :fin)'); $req->bindParam(':nom', $this->nom, PDO::PARAM_STR); $req->bindParam(':prenom', $this->prenom, PDO::PARAM_STR); $req->bindParam(':email', $this->email, PDO::PARAM_STR); $req->bindParam(':naissance', $this->naissance, PDO::PARAM_STR); $req->bindParam(':fixe', $this->fixe, PDO::PARAM_STR); $req->bindParam(':mobile', $this->mobile, PDO::PARAM_STR); $req->bindParam(':adresse', $this->adresse, PDO::PARAM_STR); $req->bindParam(':lieu_dit', $this->lieu_dit, PDO::PARAM_STR); $req->bindParam(':code_postal', $this->code_postal, PDO::PARAM_STR); $req->bindParam(':ville', $this->ville, PDO::PARAM_STR); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->bindParam(':password', $this->password, PDO::PARAM_STR); $req->bindParam(':actif', $this->actif, PDO::PARAM_STR); $req->bindParam(':debut', $this->debut, PDO::PARAM_STR); $req->bindParam(':fin', $this->fin, PDO::PARAM_STR); $req->execute(); echo 'Nombre de ligne insérées : ' . $req->rowCount(); echo 'Erreurs sql : ' . $req->errorInfo(); }
Bonjour
Merci de m'aider.
Voici maintenant l'erreur retournée
Merci de m'aider.
Voici maintenant l'erreur retournée
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C
Bonjour
Voici le message complet, l'erreur ce situe sur la ligne de la requète $sql
J'ai mon fichier class complet
Merci
Je te donne aussi le fichier de ma class connexion
Merci
Voici le message complet, l'erreur ce situe sur la ligne de la requète $sql
J'ai mon fichier class complet
Merci
class Membre { private $id_membre; private $nom; private $prenom; private $email; private $naissance; private $fixe; private $mobile; private $adresse; private $lieu_dit; private $code_postal; private $ville; private $username; private $password; //variable de connexion private static $con; //Appel à la connexion public function __construct() { $connexion = connexion::getInstance(); $db = $connexion->getDbh(); } $sql = 'SELECT nom FROM tb_adherent LIMIT 10'; foreach ($db->query($sql) as $row) { echo $row[0] . '<br />'; } public function insert() { $req = self::$con->prepare('INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, username, password) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :username, :password, :actif, :debut, :fin)'); $req->bindParam(':nom', $this->nom, PDO::PARAM_STR); $req->bindParam(':prenom', $this->prenom, PDO::PARAM_STR); $req->bindParam(':email', $this->email, PDO::PARAM_STR); $req->bindParam(':naissance', $this->naissance, PDO::PARAM_STR); $req->bindParam(':fixe', $this->fixe, PDO::PARAM_STR); $req->bindParam(':mobile', $this->mobile, PDO::PARAM_STR); $req->bindParam(':adresse', $this->adresse, PDO::PARAM_STR); $req->bindParam(':lieu_dit', $this->lieu_dit, PDO::PARAM_STR); $req->bindParam(':code_postal', $this->code_postal, PDO::PARAM_STR); $req->bindParam(':ville', $this->ville, PDO::PARAM_STR); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->bindParam(':password', $this->password, PDO::PARAM_STR); $req->bindParam(':actif', $this->actif, PDO::PARAM_STR); $req->bindParam(':debut', $this->debut, PDO::PARAM_STR); $req->bindParam(':fin', $this->fin, PDO::PARAM_STR); $req->execute(); echo 'Nombre de ligne insérées : ' . $req->rowCount(); echo 'Erreurs sql : ' . $req->errorInfo(); }
Je te donne aussi le fichier de ma class connexion
Merci
<?php class connexion { /*** Instance de la classe connexion * @access private * @var connexion * @see getInstance */ private static $instance; /*** Type de la base de donnée. * @access private * @var string * @see __construct */ private $type = "mysql"; /*** Adresse du serveur hôte. * @access private * @var string * @see __construct */ private $host = "localhost"; /*** Nom de la base de donnée. * @access private * @var string * @see __construct */ private $dbname = "cliquedecruet7"; /*** Nom d'utilisateur pour la connexion à la base de données * @access private * @var string * @see __construct */ private $username = "root"; /*** Mot de passe pour la connexion à la base de donnée * @access private * @var string * @see __construct */ private $password = ''; private static $dbh; /*** Lance la connexion à la base de donnée en le mettant * dans un objet PDO qui est stocké dans la variable $dbh * @access private */ private function __construct() { try { $this->dbh = new PDO ( $this->type.':host='.$this->host.'; dbname='.$this->dbname, $this->username, $this->password, array(PDO::ATTR_PERSISTENT => true) ); $req = "SET NAMES UTF8"; $result = $this->dbh->prepare($req); $result->execute(); } catch(PDOException $e) { echo "<div class='error'>Erreur !: ".$e->getMessage()."</div>"; die(); } } /*** Regarde si un objet connexion a déjà été instancier, * si c'est le cas alors il retourne l'objet déjà existant * sinon il en créer un autre. * @return $instance */ public static function getInstance() { if (!self::$instance instanceof self) { self::$instance = new self; } return self::$instance; } /*** Permet de récuprer l'objet PDO permettant de manipuler la base de donnée * @return $dbh */ public function getDbh() { return $this->dbh; } } ?>
Le code avec la requête select et le foreach était juste un code de test à mettre dans un fichier à part (pour tester la classe connexion).
Ce code ne doit pas apparaitre dans ta classe : supprime la requête et la boucle foreach.
Dans le constructeur de la classe Membre, remplace la ligne
par
Ce code ne doit pas apparaitre dans ta classe : supprime la requête et la boucle foreach.
Dans le constructeur de la classe Membre, remplace la ligne
$db = $connexion->getDbh();
par
self::$con = $connexion->getDbh();
Bonjour
J'ai voulu essayer de me débrouiller seul depuis 3 jours mais vraiment je n' compprends plus rien.
ce que j'ai fait
Ca me retourne plusiqurs erreurs
et cette requète me retourne ça
Je suis vraiment desespéré.
Merci de ton secours
J'ai voulu essayer de me débrouiller seul depuis 3 jours mais vraiment je n' compprends plus rien.
ce que j'ai fait
public function __construct() { $db = connexion::getInstance(); self::$con = $connexion->getDbh();
Ca me retourne plusiqurs erreurs
Notice: Undefined variable: connexion in C Fatal error: Call to a member function getDbh() on a non-object in
et cette requète me retourne ça
$sql = 'SELECT nom FROM tb_adherent LIMIT 10'; foreach ($db->query($sql) as $row) { echo $row[0] . '<br />'; }
Fatal error: Call to a member function query() on a non-object in C:.............. Notice: Undefined variable: connexion in C............................
Je suis vraiment desespéré.
Merci de ton secours