Programmation Orienté Objet
Résolu
labourette
Messages postés
657
Date d'inscription
Statut
Membre
Dernière intervention
-
labourette Messages postés 657 Date d'inscription Statut Membre Dernière intervention -
labourette Messages postés 657 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en POO et je souhaiterai pouvoir afficher tous les membres, pouvez vous m'aider un peu en me donnant quelques explications un peu détaillé s'ils vous plait.
J'ai ma class User, avec quelques méthodes, le systéme de connexion est fait j'affiche les infos du membre connecté comme ceux-ci.
Et pour afficher tous les membres vous pouvez me donner quelques explications, car je nage malgrès beaucoup de lecture de tutos sur le sujet, mais en ayant des exemple concret j'y verrai plus clair.
En vous remerciant beaucoup.
Je débute en POO et je souhaiterai pouvoir afficher tous les membres, pouvez vous m'aider un peu en me donnant quelques explications un peu détaillé s'ils vous plait.
J'ai ma class User, avec quelques méthodes, le systéme de connexion est fait j'affiche les infos du membre connecté comme ceux-ci.
<td><?php echo $user->getNom(); ?></td>
Et pour afficher tous les membres vous pouvez me donner quelques explications, car je nage malgrès beaucoup de lecture de tutos sur le sujet, mais en ayant des exemple concret j'y verrai plus clair.
En vous remerciant beaucoup.
A voir également:
- Programmation Orienté Objet
- Application de programmation - Guide
- Vente objet occasion entre particulier - Guide
- Objet interdit en cabine ryanair - Guide
- Identifier un objet à partir d'une photo - Guide
- Mesurer un objet - Guide
47 réponses
Bonjour
Merci ça fonctionne à mercveille
Tu peux me redonner quelques explications complémentaire à propos de cette fonction
self::init();
Je te remercie.
Merci ça fonctionne à mercveille
public static function ListeMembre() { self::init(); $req = self::$db->prepare('SELECT * FROM tb_adherent WHERE actif = 1'); $req->execute(); while($donnees = $req -> fetchObject('User')) { echo '<tr>'; echo '<td>'.$donnees->nom.'</td>'; echo '<td>'.$donnees->prenom.'</td>'; echo '<td>'.$donnees->email.'</td>'; $tel1 = $donnees->fixe; $tel1 = wordwrap ($tel1, 2, ' ', 1); echo '<td>'.$tel1.'</td>'; $tel2 = $donnees->mobile; $tel2 = wordwrap ($tel2, 2, ' ', 1); echo '<td>'.$tel2.'</td>'; echo '</tr>'; } }
Tu peux me redonner quelques explications complémentaire à propos de cette fonction
self::init();
Je te remercie.
pas de probleme,
$db est une variable statique déclarée dans ta classe. On appelle cela une variable de classe, comme les méthodes de classes qui sont elles des fonctions statiques. Mais $db est seulement déclarée! Elle n'est initialisée à new Database() que dès lors tu construis un objet de la classe dans laquelle elle est déclarée. Donc l'appel de la fonction init() se fait dans le constructeur de User. c'est pour cela que quand tu avais fais un new User() juste avant l'appel de la fonction ListeMembre() cela fonctionnait. Mais c'est idiot de construire un objet seulement pour initialiser une variable de classe. Car c'est pareil pour la fonction statique, $db n'est pas une variable intrinsèque à l'objet.
En fait ta fonction init() initialise ta variable $db mais regarde avant ça si elle n'était pas déjà justement initialisé. Car le problème c'est que si elle ne faisait pas de vérification, $db serait de renouveau initialisé à chaque fois que tu construis un nouvel objet User. En fait ce genre de variable statique, c'est utilisé généralement pour par exemple compter le nombre d'objet User que l'on construit. Mais là il ne s'agit pas d'un compteur donc ton code de la classe peut se simplifier à juste :
dans ta classe User
puis toujours dans la classe User, supprimer dans sa totalité la fonction init() ainsi que la ligne self::init() de ta fonction ListeMembre() et tous les appels à la fonction init() que tu peux trouver.
Mais ceci dit c'est juste pour faire plus propre et optimiser un peu le programme. Sinon ça fonctionne très bien comme ça aussi^^
$db est une variable statique déclarée dans ta classe. On appelle cela une variable de classe, comme les méthodes de classes qui sont elles des fonctions statiques. Mais $db est seulement déclarée! Elle n'est initialisée à new Database() que dès lors tu construis un objet de la classe dans laquelle elle est déclarée. Donc l'appel de la fonction init() se fait dans le constructeur de User. c'est pour cela que quand tu avais fais un new User() juste avant l'appel de la fonction ListeMembre() cela fonctionnait. Mais c'est idiot de construire un objet seulement pour initialiser une variable de classe. Car c'est pareil pour la fonction statique, $db n'est pas une variable intrinsèque à l'objet.
En fait ta fonction init() initialise ta variable $db mais regarde avant ça si elle n'était pas déjà justement initialisé. Car le problème c'est que si elle ne faisait pas de vérification, $db serait de renouveau initialisé à chaque fois que tu construis un nouvel objet User. En fait ce genre de variable statique, c'est utilisé généralement pour par exemple compter le nombre d'objet User que l'on construit. Mais là il ne s'agit pas d'un compteur donc ton code de la classe peut se simplifier à juste :
private static $db=new DataBase();
dans ta classe User
puis toujours dans la classe User, supprimer dans sa totalité la fonction init() ainsi que la ligne self::init() de ta fonction ListeMembre() et tous les appels à la fonction init() que tu peux trouver.
Mais ceci dit c'est juste pour faire plus propre et optimiser un peu le programme. Sinon ça fonctionne très bien comme ça aussi^^
Bonjour
Merci pour tes explications très clair et pour tout en fait c'est super.
Cordialement.
PS J'aurai encore une lacune toujours avec POO concernant la modification de données, je ne sais pas si tu peux encore m'aider ou si j'ouvre un autre post.
Merci
Merci pour tes explications très clair et pour tout en fait c'est super.
Cordialement.
PS J'aurai encore une lacune toujours avec POO concernant la modification de données, je ne sais pas si tu peux encore m'aider ou si j'ouvre un autre post.
Merci
bonsoir,
pour modifier des attributs d'un objets qui sont déclarés en private dans la classe, on utilise des setters. ce sont des méthodes tel que setNom() ou setPrenom() par exemple qui affectent à l'attribut associé, la valeur mise en paramètre de la fonction. On profite du fait qu'elles puissent accéder et modifier les attributs. C'est donc le développeur de la classe qui décide de faire des setters si il juge que l'utilisateur peut modifier des attributs. Les getters eux sont des méthodes permettant de récupérer les attributs de la classe. Ils existent parce que les attributs sont déclarés en private, ceci est préféré pour des raisons de sécurité.
pour modifier des attributs d'un objets qui sont déclarés en private dans la classe, on utilise des setters. ce sont des méthodes tel que setNom() ou setPrenom() par exemple qui affectent à l'attribut associé, la valeur mise en paramètre de la fonction. On profite du fait qu'elles puissent accéder et modifier les attributs. C'est donc le développeur de la classe qui décide de faire des setters si il juge que l'utilisateur peut modifier des attributs. Les getters eux sont des méthodes permettant de récupérer les attributs de la classe. Ils existent parce que les attributs sont déclarés en private, ceci est préféré pour des raisons de sécurité.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Merci,
en fait j'ai fait ceux-ci et je ne comprend pas pour ça marche pas encore quelque chose que je n'ai pas compris?
Mes méthodes de la class User
Ensuite dans la page de mon formulaire...
J'ai créé un nouvel objet et j'ai appelé la méthode update
et le formulaire
Merci,
en fait j'ai fait ceux-ci et je ne comprend pas pour ça marche pas encore quelque chose que je n'ai pas compris?
Mes méthodes de la class User
public function setNom($nom) { $this->nom = trim($nom); }
public function update() { $req = self::$db->prepare('UPDATE tb_adherent SET nom = :nom WHERE id_adherent = :id_adherent'); $req->bindParam(':id', $this->id, PDO::PARAM_INT); $req->bindParam(':nom', $this->nom, PDO::PARAM_STR); $req->execute(); }
Ensuite dans la page de mon formulaire...
J'ai créé un nouvel objet et j'ai appelé la méthode update
$donnees = new User(); $donnees->update();
et le formulaire
value="<?php $donnees->setNom($nom);?>"
bonjour,
dans le formulaire, l'attribut HTML value est la valeur du champ. Donc tu vas plutôt lui mettre le nom.
Qui ne tente rien n'a rien
dans le formulaire, l'attribut HTML value est la valeur du champ. Donc tu vas plutôt lui mettre le nom.
value="<?php $donnees->getNom();?>"
Qui ne tente rien n'a rien
Bonjour,
Maintenant ça me retourne une erreur comme quoi je croisque c'est une histoire de paramètre
Maintenant ça me retourne une erreur comme quoi je croisque c'est une histoire de paramètre
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in
Bonjour
Mon formulaire juste une partie
Je te donne toute la class User il y a la méthode "update"
Mon formulaire juste une partie
<tr> <td width="20%">Nom :</td> <td width="30%"><input name="nom" size="30" type="text" value="<?php $donnees->getNom();?>"/></td> <td width="20%">Prénom :</td> <td width="30%"><input name="prenom" size="30" type="text" value="<?php $donnees->getNom();?>"/></td> </tr>
Je te donne toute la class User il y a la méthode "update"
<?php private $id_adherent; 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; //private $hash_cookie; private static $db; public function __construct($id_adherent = null) { self::init(); //is_int -- Détermine si une variable est de type nombre entier if(is_int($id_adherent)) { try { $this->load($id_adherent); } catch(Exception $e) { throw $e; } } } public function init() { if(self::$db == null) self::$db = new Database(); } private function load($id_adherent) { $req = self::$db->prepare('SELECT * FROM tb_adherent WHERE id_adherent = :id_adherent'); $req->bindParam(':id_adherent', $id_adherent, PDO::PARAM_INT); $req->execute(); $donnees = $req->fetch(PDO::FETCH_ASSOC); if(empty($donnees)) throw new Exception('Utilisateur introuvable'); $this->setUserDatas($donnees); } ########################################################################################################################## 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 setHashCookie($hash_cookie) { // $this->hash_cookie = ($hash_cookie); //} ########################################################################################################################## 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; } ########################################################################################################################## private function setUserDatas($donnees) { if(!empty($donnees) && is_array($donnees)) { $this->id_adherent = $donnees['id_adherent']; $this->nom = $donnees['nom']; $this->prenom = $donnees['prenom']; $this->email = $donnees['email']; $this->naissance = $donnees['naissance']; $this->fixe = $donnees['fixe']; $this->mobile = $donnees['mobile']; $this->adresse = $donnees['adresse']; $this->lieu_dit = $donnees['lieu_dit']; $this->code_postal = $donnees['code_postal']; $this->ville = $donnees['ville']; $this->username = $donnees['username']; $this->password = $donnees['password']; } } public static function get($username) { self::init(); $req = self::$db->prepare('SELECT id_adherent FROM tb_adherent WHERE username = :username'); $req->bindParam(':username', $username, PDO::PARAM_STR); $req->execute(); $id_adherent = $req->fetchColumn(); return ($id_adherent) ? new self((int) $id_adherent) : null; } public static function exists($username) { self::init(); $username = trim($username); $req = self::$db->prepare('SELECT COUNT(*) FROM tb_adherent WHERE username = :username'); $req->bindParam(':username', $username, PDO::PARAM_STR); $req->execute(); $count = $req->fetchColumn(); return ($count == 0) ? false : true; } public function login() { $req = self::$db->prepare('SELECT * FROM tb_adherent WHERE username = :username AND password = :password AND actif = 1'); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->bindParam(':password', $this->password, PDO::PARAM_STR); $req->execute(); $donnees = $req->fetch(PDO::FETCH_ASSOC); $this->setUserDatas($donnees); return (!empty($donnees)); } 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)'); $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->execute(); $req = self::$db->prepare('SELECT id_adherent FROM tb_adherent WHERE username = :username'); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->execute(); $this->id_adherent = $req->fetchColumn(); } public function update() { $req = self::$db->prepare('UPDATE tb_adherent SET nom = :nom, prenom = :prenom, email = :email, naissance = :naissance, fixe = :fixe, mobile = :mobile, adresse = :adresse, lieu_dit = :lieu_dit, code_postal = :code_postal, ville = :ville, username = :username, password = :password WHERE id_adherent = :id_adherent'); $req->bindParam(':id_adherent', $this->id_adherent, PDO::PARAM_INT); $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->execute(); } public static function ListeMembre() { self::init(); $req = self::$db->prepare('SELECT * FROM tb_adherent WHERE actif = 1 ORDER BY nom, prenom ASC'); $req->execute(); while($donnees = $req -> fetchObject('User')) { echo '<tr>'; echo '<td>'.$donnees->nom.'</td>'; echo '<td>'.$donnees->prenom.'</td>'; echo '<td>'.$donnees->email.'</td>'; $tel1 = $donnees->fixe; $tel1 = wordwrap ($tel1, 2, ' ', 1); echo '<td>'.$tel1.'</td>'; $tel2 = $donnees->mobile; $tel2 = wordwrap ($tel2, 2, ' ', 1); echo '<td>'.$tel2.'</td>'; echo '</tr>'; } } }
tu m'a pas montré ce qu'il fallait.
dans un formulaire HTML tu dois avoir la méthode d'envoi et l'action.
puis pour récuperer la valeur que l'utilisateur à mis dans les textfields dans le script php pour le traitement, faut utiliser la variable $_POST. ou $_GET si la méthode d'envoi est get. Ces variables sont des tableaux associatifs par l'attribut name.
Qui ne tente rien n'a rien
dans un formulaire HTML tu dois avoir la méthode d'envoi et l'action.
<form method="POST" action="updateUser.php"> <input type="text" ... /> <.../> <input type="submit" value="Mettre à jour"/> </form>
puis pour récuperer la valeur que l'utilisateur à mis dans les textfields dans le script php pour le traitement, faut utiliser la variable $_POST. ou $_GET si la méthode d'envoi est get. Ces variables sont des tableaux associatifs par l'attribut name.
Qui ne tente rien n'a rien
en fait je n'ai pas mis tout le formulaire
<form id="formulaire" action="" method="post"> <fieldset> <legend class="legend">Modifier mon profil</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" size="30" type="text" value="<?php $donnees->getNom();?>"/></td> <td width="20%">Prénom :</td> <td width="30%"><input name="prenom" size="30" type="text" value="<?php $donnees->getNom();?>"/></td> </tr> <input type="submit" class="submit" value="Modifier"/> </fieldset> </form>
ok donc il n'y a pas de problème côté HTML. est-ce que tu vois bien les champs remplies par défaut des noms et prénoms de l'objet ?
maintenant ton bout de code de ta même page avec $_POST pour le traitement du formulaire. il doit se trouver idéalement en début de page avant la première balise HTML que tu envoies au client.
maintenant ton bout de code de ta même page avec $_POST pour le traitement du formulaire. il doit se trouver idéalement en début de page avant la première balise HTML que tu envoies au client.
Bonjour,
Je ne comprends pas après avoir passé un bon moment.
Merci de ton aide.
Alors voilà ce que j'ai essayé de faire.
Pour le formulaire côté HTML les champs sont bien remplis avec
j'initialise les variables
cré un objet
affiche les setters pour pouvoir modifier
j'accéde à la méthode update
Je ne comprends pas après avoir passé un bon moment.
Merci de ton aide.
Alors voilà ce que j'ai essayé de faire.
Pour le formulaire côté HTML les champs sont bien remplis avec
value="<?php echo $user->getNom();?>"
j'initialise les variables
cré un objet
affiche les setters pour pouvoir modifier
j'accéde à la méthode update
if(!empty($_POST)) { $nom = $_POST['nom']; $prenom = $_POST['prenom']; $email = $_POST['email']; $username = $_POST['username']; $user = new User(); $user->setNom($nom); $user->setPrenom($prenom); $user->setEmail($email); $user->setUsername($username); $user->update(); }
bonsoir
les champs username et email n'existent pas dans ton formulaire HTML.
est-ce que tu as une erreur qui s'affiche après l'envoi du formulaire?
ce que je te conseille de faire,
c'est rajouter
aussi pour vérifier $_POST il est bon d'utiliser la fonction isset() pour savoir si $_POST existe avant de voir si il est vide ou pas.
les champs username et email n'existent pas dans ton formulaire HTML.
est-ce que tu as une erreur qui s'affiche après l'envoi du formulaire?
ce que je te conseille de faire,
c'est rajouter
echo $req;juste avant la ligne
$req->execute();dans ta fonction update() pour qu'il affiche la requête SQL et voir ce qu'il se passe. tu fais un copier-coller de ta requête dans ton SGBD et tu regardes ce qu'il te dit.
aussi pour vérifier $_POST il est bon d'utiliser la fonction isset() pour savoir si $_POST existe avant de voir si il est vide ou pas.
if(isset($_POST)&&!empty($_POST))
Voici l'erreur retournée
Catchable fatal error: Object of class PDOStatement could not be converted to string in
Bonjour
Je t'envoie la totalité de mon formulaire.
Il y a quelques chose que je ne comprends pas c'est fou..
Donc ça me retourne l'erreur ci-dessus après avoir rajouté echo $req; comme tu me l'a dit sinon sans ça aucune erreur
Je t'envoie la totalité de mon formulaire.
Il y a quelques chose que je ne comprends pas c'est fou..
Donc ça me retourne l'erreur ci-dessus après avoir rajouté echo $req; comme tu me l'a dit sinon sans ça aucune erreur
<?php if(isset($_POST)&&!empty($_POST)) { $nom = $_POST['nom']; $prenom = $_POST['prenom']; $email = $_POST['email']; $username = $_POST['username']; $user = new User(); $user->setNom($nom); $user->setPrenom($prenom); $user->setEmail($email); $user->setUsername($username); $user->update(); } ?> <div id="content"> <form id="formulaire" action="" method="post"> <fieldset> <legend class="legend">Modifier mon profil</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" size="30" type="text" value="<?php echo $user->getNom();?>"/></td> <td width="20%">Prénom :</td> <td width="30%"><input name="prenom" size="30" type="text" value="<?php echo $user->getPrenom();?>"/></td> <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="<?php echo $user->getEmail();?>"/></td> </tr> <tr> <td width="20%"><img src="image/login.png" alt="Login" title="Login" height="22" width="22"/> Login :</td> <td width="30%"><input name="username" id="login_modif_membre" class="content_input" onFocus="this.blur()" size="20" type="text" value="<?php echo $user->getUsername();?>"/></td> </tr> </table> <!--#######################################################################################################################################--> <input type="submit" name="submit" class="submit" value="Enregistrer"/> </fieldset> </form> </div>
salut,
visiblement ta fonction update() semble problématique. As-tu fait un
visiblement ta fonction update() semble problématique. As-tu fait un
echo $req;comme je t'ai dit tans ta fonction update() pour voir ce qu'elle contient comme résultat et vérifier si elle ne comporte pas d'erreur SQL
Bonjour
oui elle retourne l'erreur que je t'ai dit en fait
Merci
oui elle retourne l'erreur que je t'ai dit en fait
Catchable fatal error: Object of class PDOStatement could not be converted to string in C
Merci
Bonjour
Voilà je pense à quelque chose, il faudrait peut-être ajouter un SELECT dans la méthode UPDATE juste avant le update en fait je vais quand même essayer.
Je te redis qu'est ce qu'il en ressors....
Merci
Voilà je pense à quelque chose, il faudrait peut-être ajouter un SELECT dans la méthode UPDATE juste avant le update en fait je vais quand même essayer.
Je te redis qu'est ce qu'il en ressors....
Merci
Bonjour
Alors voilà j'ai fait ceux-ci dans la méthode update à priori ça enregistre dans la BDD
Mais voilà dans ma tête c'est pas clair du tout.
Déjà pourquoi dans le WHERE il n'y a pas plutôt
si tu peux me donner des explications et en plus au niveau de l'affichage les donner modifier ne retourne pas dans le formulaire mais juste dans la BDD.
Merci beaucoup, j'y suis allé à taton si il y a autre chose de mieux au niveau requète.
Alors voilà j'ai fait ceux-ci dans la méthode update à priori ça enregistre dans la BDD
public function update() { $req = self::$db->prepare('SELECT id_adherent FROM tb_adherent WHERE username = :username'); $req->bindParam(':username', $this->username, PDO::PARAM_STR); $req->execute(); $this->id_adherent = $req->fetchColumn(); $req = self::$db->prepare('UPDATE tb_adherent SET nom = :nom, prenom = :prenom, email = :email, naissance = :naissance, fixe = :fixe, mobile = :mobile, adresse = :adresse, lieu_dit = :lieu_dit, code_postal = :code_postal, ville = :ville, username = :username, password = :password WHERE id_adherent = :id_adherent'); $req->bindParam(':id_adherent', $this->id_adherent, PDO::PARAM_INT); $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->execute(); }
Mais voilà dans ma tête c'est pas clair du tout.
Déjà pourquoi dans le WHERE il n'y a pas plutôt
WHERE id_adherent= id_adherent');
si tu peux me donner des explications et en plus au niveau de l'affichage les donner modifier ne retourne pas dans le formulaire mais juste dans la BDD.
Merci beaucoup, j'y suis allé à taton si il y a autre chose de mieux au niveau requète.