Fatal error
papyclic
Messages postés
451
Statut
Membre
-
papyclic Messages postés 451 Statut Membre -
papyclic Messages postés 451 Statut Membre -
Bonjour,
J'appelle la fonction prepare sur un non object.......
de ma méthode NewPass.
Mais étant débutant je ne vois pas comment faire pour résoudre cela, pouvez-vous m'aider s'ils vous plait.
Merci beaucoup
J'appelle la fonction prepare sur un non object.......
de ma méthode NewPass.
Fatal error: Call to a member function prepare() on a non-object in C:
Mais étant débutant je ne vois pas comment faire pour résoudre cela, pouvez-vous m'aider s'ils vous plait.
Merci beaucoup
public static function NewPass($id_adherent, $passActuel, $newPassUn, $newPassDe) {
if(!empty($passActuel) AND !empty($newPassUn) AND !empty($newPassDe)) {
if($newPassUn === $newPassDe) {
$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($donnees['password'] === Security::hash($passActuel)) {
$newPass = Security::hash($newPassUn);
$req = self::$db->prepare('UPDATE tb_adherent SET password = :newPass WHERE id_adherent = :id_adherent');
$req -> bindParam(':newPass', $newPass);
$req->bindParam(':id_adherent', $id_adherent, PDO::PARAM_INT);
if($req -> execute()) {
$resultat = 'Votre mot de passe a été changé avec succés.';
} else {
$resultat = '<span class="error-info">Une erreur est survenue pendant la mise à jour de votre mot de passe.</span>';
}
} else {
$resultat = '<span class="error-info">Vous n\'avez pas saisi correctement votre mot de passe actuel,<br />veuillez recommencer.</span>';
}
} else {
$resultat = '<span class="error-info">Les champs "Votre nouveau mot de passe" et "Confirmer Nouveau Mot de passe" doivent être identiques,<br />veuillez recommencer.</span>';
}
} else {
$resultat = '<span class="error-info">Pour changer de mot de passe vous devez remplir tout les champs,<br />veuillez recommencer.</span>';
}
return $resultat;
}
3 réponses
-
Bonsoir,
Tu pourrais mettre la fonction _construct de ta class et nous indiquer si tu fais un EXTEND de PDO ?
-
Bonjour
Voici ma classclass Database extends PDO { public function __construct() { try { parent::__construct('mysql:host=' . Config::HOTE . ';dbname=' . Config::DBNAME, Config::USERNAME, Config::PASSWORD); $this->exec("SET CHARACTER SET utf8"); $this->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); } catch(Exception $e) { echo 'Impossible de se connecter à la base de donnée</br>'; echo 'Erreur : ' . $e->getMessage() . '<br />'; echo 'N° : ' . $e->getCode(); } } }
Merci -
Dans ma class User
private static $db; public function __construct($id_adherent = null) { self::init(); 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); }
je me demande si je ne dois pas appeler la fonction init comme cecipublic static function NewPass($id_adherent, $passActuel, $newPassUn, { $newPassDe) { self::init(); $req = self::$db->prepare('SELECT id_adherent FROM tb_adherent WHERE username = :username');