Mise à jour d'un email en base de données
Résolu/Fermé
A voir également:
- Mise à jour d'un email en base de données
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise en forme conditionnelle excel - Guide
5 réponses
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
7 juin 2018 à 22:54
7 juin 2018 à 22:54
Bonjour
Commence par ça
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Commence par ça
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Utilisateur anonyme
8 juin 2018 à 09:33
8 juin 2018 à 09:33
Bonjour. J'ai trouvé l'erreur. Cela venait de l'id de l'email. Dans ma base de données il était auto-incrémenté. Et donc il fallait d'abord chercher l'id de l'email et ensuite applique les modification symbolisé par la méthode "update" de mon manager. Donc j'ai appliqué la méthode "read" de mon manager sur l'id dans la méthode "update". La requête SQL est fonctionnelle. Merci.
Utilisateur anonyme
8 juin 2018 à 19:15
8 juin 2018 à 19:15
Bonsoir. Finalement ma méthode "read" ne marche pas très bien. Car j'ai un formulaire de connexion que voici :
Ensuite voici mon manager EmailManager modifié :
Et voici la page renvoyé si on envoie le formulaire :
Dans mon formulaire de connexion, j'ai un champ caché faisant référence à l'id auto incrémenté dans ma base de données et en faisant mes tests, je constate que ma méthode "read", récupère bien l'email et le mot de passe renseigné dans les champ mais pas l'id.
Pouvez-vous m'aider à récupérer l'id de l'email dans la table "email" de ma base dans le champ caché ?
<?php //Mon formulaire de connextion au back-office //Définition de l'espace de travail du projet namespace app; //Inclusion des script PHP nécessaire au bon déroulement du traitement include('_entete.php'); include('../app/config/identifiantsbdd.php'); include('../app/config/DatabaseAccess.php'); include('../app/managers/EmailManager.php'); include('../app/entities/email.php'); ?> <form action="traitement.php" method="POST"> <div class="form-group"> </div> <input type="hidden" name="id" value=""></p> <!-- on cache ID mais on en a besoin pour récupérer les données --> <div class="form-group"> <label for="exampleInputEmail1">Mon adresse email</label> <input type="email" class="form-control" name="email" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Entrer votre adresse Email"> </div> <div class="form-group"> <label for="exampleInputPassword1">Mot de passe</label> <input type="password" class="form-control" name="password" id="exampleInputPassword1" placeholder="Entrer votre mot de passe"> </div> <div class="form-group form-check"> <input type="checkbox" class="form-check-input" id="exampleCheck1"> <label class="form-check-label" for="exampleCheck1">Se souvenir de moi</label> </div> <button type="submit" name="envoyer" class="btn btn-primary">Envoyer</button> </form> <br> <a href='creation.php'> <button type="button" class="btn btn-info btn-lg">Ajouter un Email</button> </a> </div> </body> <?php include('_piedpage.php'); ?>
Ensuite voici mon manager EmailManager modifié :
<?php /** * Created by PhpStorm. * User: Honoré * Date: 13/05/2018 * Time: 21:30 */ //Controller éffectuant les CRUD en base de données pour la table E-mail //Utilisation de l'espace de travail namespace app; //Utilisation de l'objet PDO pour interagir avec la base de données use PDO; //Class permettant d'effectuer les requêtes CRUD en base de données dans la table E-mail, elle hérite de la classe de connexion en base de données class EmailManager extends DatabaseAccess { protected $sql; //Constructeur faisant appel au constructeur mère à savoir DatabaseAccess public function __construct() { parent::__construct(); } //Methode de création d'un courriel public function create() { $email = new email($_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('INSERT INTO email (idemail, emailpersonne, password) VALUES (NULL, :emailpersonne, :password)'); $sql->bindValue(":emailpersonne", $email->getEmail(), PDO::PARAM_STR); $sql->bindValue(":password", $email->getPassword(), PDO::PARAM_STR); $resultat = $sql->execute(); return $resultat; } //Méthode permettant de sélectionner un courriel dans la base de données en fonction de ce qui est entré en base de données public function read($idemail) { try { $email = new email($_POST["id"], $_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('SELECT idemail, emailpersonne, password FROM email WHERE idemail= :idemail'); $resultat = array(":idemail" => $idemail); $sql->bindValue(":idemail", $idemail, PDO::PARAM_INT); $sql->execute($resultat); //$sql->fetchObject(__CLASS__); } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; } print_r($resultat); } //Méthode ayant comme signature le récupération de tous les email de la table public function readAll() { $email = new email($_POST["id"], $_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('SELECT idemail, emailpersonne, password FROM email ORDER BY emailpersonne =:emailpersonne'); $sql->bindValue(":emailpersonne", $email->getEmail(), PDO::PARAM_STR); $sql->execute(); $resultat = $sql->fetchAll(); return $resultat; } //Méthode permettant de mettre à jour un email public function update($idemail) { try { $email = new email($_POST["id"], $_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('UPDATE email SET emailpersonne=:emailpersonne, password=:password WHERE idemail=:idemail LIMIT 1'); $resultat = array(":emailpersonne" => $email->getEmail(), ":password" => $email->getPassword(), ":idemail" => $this->read($idemail)); $sql->bindValue(":emailpersonne", $email->getEmail(), PDO::PARAM_STR); $sql->bindValue(":password", $email->getPassword(), PDO::PARAM_STR); $sql->bindValue(":idemail", $this->read($idemail), PDO::PARAM_INT); $sql->execute($resultat); } catch (Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; } print_r($resultat); } //Méthode de suppression un email public function delete($idemail) { $sql = $this->pdo->prepare('DELETE FROM email WHERE idemail =:idemail LIMIT 1'); $sql->bindValue(":idemail", $this->read($idemail), PDO::PARAM_INT); $resultat = $sql->execute(); return $resultat; } }
Et voici la page renvoyé si on envoie le formulaire :
<?php //Déclaration de l'espace de travail du projet namespace app; //Démarrage de la session session_start(); //Condition qui doit vérifié si l'utilisateur est authentifié /* if (empty($_SESSION["email"])) { header('location:formulaire.php'); exit(); }*/ //Inclusion des scripts nécessaire au traitement des données venant de la base de données include("_entete.php"); include("../app/config/identifiantsbdd.php"); include("../app/config/DatabaseAccess.php"); include("../app/entities/email.php"); include("../app/managers/EmailManager.php"); //Activation des erreurs PDO error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //Création des objets pour l'email et leur traitement $result = new EmailManager(); //$email = new email($_POST['id'], $_POST['donnee'], $_POST['password']); //Récupération des valeurs passé dans le formulaire et affectation dans la session ?> <table class="table"> <thead> <tr> <th scope="col">Session</th> <th scope="col"></th> </tr> </thead> <tbody> <?php $_SESSION["id"] = $_POST["id"]; var_dump($_SESSION["id"]); //Condition stipulant que si on clique sur le bouton "envoyer" et que si le contenu des champs n'est pas vide, on affiche le "Bonjour $_SESSION" if (isset($_POST["envoyer"])) { if (isset($_POST["id"]) && isset($_POST["email"]) && isset($_POST["password"])) { $mail = new email($_POST["id"], $_POST["email"], $_POST["password"]); $_SESSION["email"] = $_POST["email"]; $_SESSION["password"] = $_POST["password"]; var_dump($_SESSION); //$_SESSION["id"] = $result->read($_POST["id"]); //$_SESSION["email"] = $_POST["email"]; //$_SESSION["password"] = $_POST["password"]; echo "<tr>"; echo "<td>"; echo "<input type=\"hidden\" name=\"id\" value=\"".$mail->getId()."\">"."</p>"; echo "</td>"; $_SESSION["id"] = $_POST["id"]; if($result->read($_SESSION["id"])==true) { echo "<td>" . "Bonjour " . $_SESSION["email"] . '<br>' . "</li>"; echo "</td>"; echo "<td>"; echo "<a href='modification.php'><button type=\"button\" class=\"btn btn-success \">Modifier</button></a>"; echo "</td>"; echo "<td>"; echo "<a href='modification.php'><button type=\"button\" class=\"btn btn-warning \" name=\"supprimer\">Supprimer</button></a>"; echo "</td>"; } } } /* //Condition stipulant que si on clique sur le bouton "supprimer" et que si le contenu des champs n'est pas vide, on affiche les messages suivants : if (isset($_POST["supprimer"])) { var_dump($result->delete($_SESSION["id"])); if ($result->delete($_SESSION["id"]) == true) { echo "<div class=\"alert alert-success\" role=\"alert\"> L'email supprimé avec succès et dévotion ! </div>"; } else { echo "<div class=\"alert alert-warning\" role=\"alert\"> L'email n'est pas supprimer avec échec et déception ! </div>"; } }*/ ?> </tbody> </table> <table class="table"> <thead> <tr> <th scope="col">#</th> <th scope="col">Email</th> <th scope="col"></th> </tr> </thead> <tbody> <?php //$email = new email($_POST['email'], $_POST['password']); $donnees = $result->readAll(); //Récupération des email venant de la base de données foreach ($donnees as $donnee) { //$id = $donnee["idemail"]; echo "<tr>"; echo "<td>" . "<li name='id'>" . $donnee["idemail"] . "</li>"; echo "</td>"; echo "<td>" . "<li name='email'>" . $donnee["emailpersonne"] . "</li>"; echo "</td>"; echo "<td>"; //echo "<a href='modification.php?id=$id'><button type=\"button\" class=\"btn btn-success \">Modifier</button></a>"; echo "</td>"; echo "<td>"; echo "<a href='suppression.php'>"; echo "</a>"; echo "</td>"; echo "</tr>"; echo "</form>"; } ?> </tbody> </table> <a href='creation.php'> <button type="button" class="btn btn-info btn-lg">Ajouter un Email</button> </a> </body> <?php include('_piedpage.php'); ?>
Dans mon formulaire de connexion, j'ai un champ caché faisant référence à l'id auto incrémenté dans ma base de données et en faisant mes tests, je constate que ma méthode "read", récupère bien l'email et le mot de passe renseigné dans les champ mais pas l'id.
Pouvez-vous m'aider à récupérer l'id de l'email dans la table "email" de ma base dans le champ caché ?
Utilisateur anonyme
9 juin 2018 à 19:24
9 juin 2018 à 19:24
Bon les choses ont évolué depuis mon dernier post. Pour la méthode "read" j'ai abandonné la récupération par l'id au profit de l'email vu que l'email est un identifiant en soi (il est unique à chaque utilisateur). Néanmoins, un problème se pose pour la méthode "update". Car pour changer un email par exemple, il faut se reférer sur un autre champ qui est unique en l'occurence l'id de l'email. Donc mon problème actuel, c'est la méthode "update" dont j'aimerai récupérer l'id pour pouvoir appliquer la mise à jour d'un l'email.
Voici mon code changé depuis. Voici mon formulaire de connexion :
Quand l'utilisateur est connecté il tombe sur la page traitement.php avec un message personnalisé pour l'email présent dans la base de données :
A côté de l'email connecté, il y a deux boutons modifier et supprimer. Et quand je clique à côté du bouton "modifier", je tombe sur le formulaire de modification avec les champ prérempli (l'email et le mot de passe notamment) :
En dessous il y a un bouton "renvoyer" et quand je change ou je modifie l'email et/ou le mot de passe et que je clique sur "renvoyer", l'email et le mot de passe sont changé dans la session mais pas en base de données. Car en faisant un var_dump de ma variable superglobale $_SESSION, il manque l'id qui n'a pas été récupéré d'où le fait que les changements n’interagissent pas avec la base de données. Voici mon entité email :
Et voici le manager gérant la gestion avec la table email de ma base de données. Et c'est la méthode "update" qui gère les modifications de mes informations :
Pouvez-vous m'aider car j'ai tout essayé mais rien à faire aucune interaction avec la base de données pour la méthode "update". Les autres méthodes de mon manager marchent bien sauf la méthode "update".
PS : j'ai réappliqué la solution que j'avais posté précedemment c'est-à-dire appliqué la méthode "read" sur l'id dans la méthode "update"mais visiblement cela ne marche pas.
Voici mon code changé depuis. Voici mon formulaire de connexion :
<?php //Mon formulaire de connextion au back-office //Définition de l'espace de travail du projet namespace app; //Inclusion des script PHP nécessaire au bon déroulement du traitement include('_entete.php'); include('../app/config/identifiantsbdd.php'); include('../app/config/DatabaseAccess.php'); include('../app/managers/EmailManager.php'); include('../app/entities/email.php'); use app\email; //$_POST["id"] = NULL; $_POST["email"] = NULL; $_POST["password"] = NULL; //$_SESSION["id"] = $_POST["id"]; $mail = new email($_POST["email"], $_POST["password"]); ?> <form action="traitement.php" method="POST"> <div class="form-group"> <label for="exampleInputEmail1">Mon adresse email</label> <input type="email" class="form-control" name="email" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Entrer votre adresse Email"> </div> <div class=\"form-group\"> <label for="exampleInputPassword1">Mot de passe</label> <input type="password" class="form-control" name="password" id="exampleInputPassword1" placeholder="Entrer votre mot de passe"> </div> <div class="form-group form-check"> <input type="checkbox" class="form-check-input" id="exampleCheck1"></p> <label class="form-check-label" for="exampleCheck1">Se souvenir de moi</label> </div> <button type="submit" name="envoyer" class="btn btn-primary btn-lg">Envoyer</button> <div class="form-group"> <input type="hidden" name="id" value=""></p> </div> <!-- on cache ID mais on en a besoin pour récupérer les données --> </form> <br> <a href='creation.php'> <button type="button" class="btn btn-info btn-lg">Ajouter un Email</button> </a> </div> </body> <?php include('_piedpage.php'); ?>
Quand l'utilisateur est connecté il tombe sur la page traitement.php avec un message personnalisé pour l'email présent dans la base de données :
<?php //Déclaration de l'espace de travail du projet namespace app; //Démarrage de la session session_start(); //Condition qui doit vérifié si l'utilisateur est authentifié /* if (empty($_SESSION["email"])) { header('location:formulaire.php'); exit(); }*/ //Inclusion des scripts nécessaire au traitement des données venant de la base de données include("_entete.php"); include("../app/config/identifiantsbdd.php"); include("../app/config/DatabaseAccess.php"); include("../app/entities/email.php"); include("../app/managers/EmailManager.php"); //Activation des erreurs PDO error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //Création des objets pour l'email et leur traitement $result = new EmailManager(); $mail = new email($_POST['email'], $_POST['password']); //Récupération des valeurs passé dans le formulaire et affectation dans la session $mailpersonne = $_POST["email"]; $pass = $_POST["password"]; $_SESSION["id"] = $_POST["id"]; ?> <table class="table"> <thead> <tr> <th scope="col">Session</th> <th scope="col"></th> </tr> </thead> <tbody> <?php //var_dump($_SESSION["id"]); //Condition stipulant que si on clique sur le bouton "envoyer" et que si le contenu des champs n'est pas vide, on affiche le "Bonjour $_SESSION" if (isset($mailpersonne) && isset($pass) && isset($_POST["envoyer"])) { //$mail = new email($_POST["id"], $_POST["email"], $_POST["password"]); $_SESSION["email"] = $mailpersonne; $_SESSION["password"] = $pass; var_dump($_SESSION); var_dump($result->read($_SESSION["email"])); echo "<tr>"; echo "<td>"; echo "</td>"; if ($result->read($_SESSION["email"]) == true) { $_SESSION["id"] = $mail->getId(); echo "<input type=\"hidden\" name=\"id\" value=\"" . $_SESSION["id"] . "\">" . "</p>"; echo "<td>" . "Bonjour " . $_SESSION["email"] . '<br>' . "</li>"; echo "</td>"; echo "<td>"; echo "<a href='modification.php'><button type=\"button\" class=\"btn btn-success \">Modifier</button></a>"; echo "</td>"; echo "<td>"; echo "<a href='modification.php'><button type=\"button\" class=\"btn btn-warning \" name=\"supprimer\">Supprimer</button></a>"; echo "</td>"; } } /* //Condition stipulant que si on clique sur le bouton "supprimer" et que si le contenu des champs n'est pas vide, on affiche les messages suivants : if (isset($_POST["supprimer"])) { var_dump($result->delete($_SESSION["id"])); if ($result->delete($_SESSION["id"]) == true) { echo "<div class=\"alert alert-success\" role=\"alert\"> L'email supprimé avec succès et dévotion ! </div>"; } else { echo "<div class=\"alert alert-warning\" role=\"alert\"> L'email n'est pas supprimer avec échec et déception ! </div>"; } }*/ ?> </tbody> </table> <table class="table"> <thead> <tr> <th scope="col">#</th> <th scope="col">Email</th> <th scope="col"></th> </tr> </thead> <tbody> <?php //$email = new email($_POST['email'], $_POST['password']); $donnees = $result->readAll(); //Récupération des email venant de la base de données foreach ($donnees as $donnee) { //$id = $donnee["idemail"]; echo "<tr>"; echo "<td>" . "<li name='id'>" . $donnee["idemail"] . "</li>"; echo "</td>"; echo "<td>" . "<li name='email'>" . $donnee["emailpersonne"] . "</li>"; echo "</td>"; echo "<td>"; //echo "<a href='modification.php?id=$id'><button type=\"button\" class=\"btn btn-success \">Modifier</button></a>"; echo "</td>"; echo "<td>"; echo "<a href='suppression.php'>"; echo "</a>"; echo "</td>"; echo "</tr>"; echo "</form>"; } ?> </tbody> </table> <br> <p> <a href="index.php"> <button type="submit" name="envoyer" class="btn btn-primary btn-lg">Formulaire de connexion</button> </a> </p> <a href='creation.php'> <button type="button" class="btn btn-info btn-lg">Ajouter un Email</button> </a> </body> <?php include('_piedpage.php'); ?>
A côté de l'email connecté, il y a deux boutons modifier et supprimer. Et quand je clique à côté du bouton "modifier", je tombe sur le formulaire de modification avec les champ prérempli (l'email et le mot de passe notamment) :
<?php //Mon formulaire de modification au back-office //Définition de l'espace de travail du projet namespace app; session_start(); //Inclusion des script PHP nécessaire au bon déroulement du traitement include('_entete.php'); include("../app/config/identifiantsbdd.php"); include('../app/config/DatabaseAccess.php'); include('../app/entities/email.php'); include("../app/managers/EmailManager.php"); error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); $_POST["email"] = $_SESSION["email"]; $_POST["password"] = $_SESSION["password"]; $mail = new email($_POST["email"], $_POST["password"]); $_SESSION["id"] = $mail->getId(); ?> <form action="modifok.php" method="POST"> <div class="form-group"> <input type="hidden" name="id" value="<?php echo $_SESSION["id"]; ?>" </p> <!-- on cache ID mais on en a besoin pour récupérer les données --> </div> <div class="form-group"> <label for="exampleInputEmail1">Modification de adresse email</label> <input type="email" class="form-control" name="email" id="exampleInputEmail1" aria-describedby=\"emailHelp" value="<?php echo $_POST["email"]; ?> "> <div class="form-group"> <label for="exampleInputPassword1">Mot de passe</label> <input type="password" class="form-control" name="password" id="exampleInputPassword1" value="<?php echo $_POST["password"]; ?>"> </div> </div> <button type="submit" name="renvoyer" class="btn btn-success">Renvoyer</button> <button type="submit" name="supprimer" class="btn btn-warning">Supprimer</button> </form> <br> <a href='creation.php'> <button type="button" class="btn btn-info btn-lg">Ajouter un Email</button> </a> <?php include('_piedpage.php'); ?>
En dessous il y a un bouton "renvoyer" et quand je change ou je modifie l'email et/ou le mot de passe et que je clique sur "renvoyer", l'email et le mot de passe sont changé dans la session mais pas en base de données. Car en faisant un var_dump de ma variable superglobale $_SESSION, il manque l'id qui n'a pas été récupéré d'où le fait que les changements n’interagissent pas avec la base de données. Voici mon entité email :
<?php /** * Created by PhpStorm. * User: Honoré * Date: 13/05/2018 * Time: 21:18 */ //Class entité d'un Email faisant référence au colonne de la table Email namespace app; //include_once('../config/autoload.php'); class email { //Les colonnes de la table défini comme attribut de la classe private $id; private $email; private $password; /** * email constructor. * @param $id * @param $email * @param $password */ public function __construct($email, $password) { //$this->id = $id; $this->email = $email; $this->password = $password; } //Ensuite les assesseurs et mutateurs permettant de récuperer les enregistrements de la table /** * @return mixed */ public function getId() { return $this->id; } /** * @param mixed $id */ public function setId($id) { $this->id = $id; return $this; } /** * @return mixed */ public function getEmail() { return $this->email; } /** * @param mixed $email */ public function setEmail($email) { $this->email = $email; return $this; } /** * @return mixed */ public function getPassword() { return $this->password; } /** * @param mixed $password */ public function setPassword($password) { $this->password = $password; return $this; } }
Et voici le manager gérant la gestion avec la table email de ma base de données. Et c'est la méthode "update" qui gère les modifications de mes informations :
<?php /** * Created by PhpStorm. * User: Honoré * Date: 13/05/2018 * Time: 21:30 */ //Controller éffectuant les CRUD en base de données pour la table E-mail //Utilisation de l'espace de travail namespace app; //Utilisation de l'objet PDO pour interagir avec la base de données use PDO; //Class permettant d'effectuer les requêtes CRUD en base de données dans la table E-mail, elle hérite de la classe de connexion en base de données class EmailManager extends DatabaseAccess { protected $sql; //Constructeur faisant appel au constructeur mère à savoir DatabaseAccess public function __construct() { parent::__construct(); } //Methode de création d'un courriel public function create() { $email = new email($_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('INSERT INTO email (emailpersonne, password) VALUES (:emailpersonne, :password)'); $resultat = $sql->execute(array(":emailpersonne" => $email->getEmail(), ":password" => $email->getPassword())); $sql->closeCursor(); return $resultat; } //Méthode permettant de sélectionner un courriel dans la base de données en fonction de ce qui est entré en base de données public function read($emailpersonne) { $sql = $this->pdo->prepare('SELECT emailpersonne FROM email WHERE emailpersonne=:emailpersonne'); $sql->execute(array(":emailpersonne" => $emailpersonne)); $resultat = $sql->fetch(); $sql->closeCursor(); return $resultat; } //Méthode ayant comme signature le récupération de tous les email de la table public function readAll() { $email = new email($_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('SELECT idemail, emailpersonne, password FROM email ORDER BY emailpersonne =:emailpersonne'); $sql->execute(array(":emailpersonne" => $email->getEmail())); $resultat = $sql->fetchAll(); $sql->closeCursor(); return $resultat; } //Méthode permettant de mettre à jour un email public function update($emailpersonne, $password) { $email = new email($_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('UPDATE email SET emailpersonne=:emailpersonne, password=:password WHERE emailpersonne =:emailpersonne'); $resultat = $sql->execute(array(":emailpersonne" => $emailpersonne, ":password" => $password, ":idemail"=>$email->getId())); $sql->closeCursor(); return $resultat; } //Méthode de suppression un email public function delete($emailpersonne) { $sql = $this->pdo->prepare('DELETE FROM email WHERE emailpersonne =:emailpersonne LIMIT 1'); $resultat = $sql->execute(array(":emailpersonne" => $emailpersonne)); $sql->closeCursor(); return $resultat; } }
Pouvez-vous m'aider car j'ai tout essayé mais rien à faire aucune interaction avec la base de données pour la méthode "update". Les autres méthodes de mon manager marchent bien sauf la méthode "update".
PS : j'ai réappliqué la solution que j'avais posté précedemment c'est-à-dire appliqué la méthode "read" sur l'id dans la méthode "update"mais visiblement cela ne marche pas.
yg_be
Messages postés
23413
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
1 557
9 juin 2018 à 19:55
9 juin 2018 à 19:55
la méthode update ne devrait-elle pas recevoir en paramètres l'ancien et le nouveau email?
yg_be
Messages postés
23413
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
1 557
>
Utilisateur anonyme
9 juin 2018 à 21:18
9 juin 2018 à 21:18
"normalement", tu fais certaines chose, et, en réalité, tu en fais d'autres:
moi je lis ceci:
je trouve que tes noms $email et $emailpersonne sont très confus: quel est l'ancien email, quel est le nouvel email?
moi je lis ceci:
UPDATE email SET emailpersonne=:emailpersonne, password=:password WHERE emailpersonne =:emailpersonne
je trouve que tes noms $email et $emailpersonne sont très confus: quel est l'ancien email, quel est le nouvel email?
Où tu vois dans ma méthode "update" un variable $email ? email correspond au nom de la table et $emailpersonne c'est l'email qui est sur le point de changer qui est en argument dans la méthode. Quand je fais appel à cette méthode et que je mets en argument $_POST["email"], il doit me changer le contenu. Mais si tu veux plus de clarté, j'ai modifié entre temps ma méthode "update" la voici :
Il y a un variable $mail par contre qui construit l'objet email par contre.
//Méthode permettant de mettre à jour un email public function update($emailpersonne, $password) { $mail = new email($_POST["email"], $_POST["password"]); $sql = $this->pdo->prepare('UPDATE email SET emailpersonne=:emailpersonne, password=:password WHERE idemail =:idemail'); $resultat = $sql->execute(array(":emailpersonne" => $emailpersonne, ":password" => $password, ":idemail"=>$mail->getId())); $sql->closeCursor(); return $resultat; }
Il y a un variable $mail par contre qui construit l'objet email par contre.
yg_be
Messages postés
23413
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
1 557
>
Utilisateur anonyme
9 juin 2018 à 22:10
9 juin 2018 à 22:10
je vois une variable $email en ligne 61 du post #4. y vois-tu autre chose?
je trouve que tes noms $mail et $emailpersonne sont très confus: quel est l'ancien email, quel est le nouvel email?
je trouve que tes noms $mail et $emailpersonne sont très confus: quel est l'ancien email, quel est le nouvel email?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
12 juin 2018 à 22:22
12 juin 2018 à 22:22
Bonsoir. J'ai changé mon application entre temps en la transformant en gestion de personnes au lieu de la gestion d'emails. Et en lisant quelques bouquins de PHP, j'ai pu résoudre l'erreur de ma méthode update. Car il fallait d'abord que je lise l'id dans le formulaire de modification avec la méthode "read" de mon manager et que j'applique la méthode "update".
Merci pour votre aide mon application de gestion de personne est fonctionnel.
Merci pour votre aide mon application de gestion de personne est fonctionnel.