Fatal error
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,
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 ?
Tu pourrais mettre la fonction _construct de ta class et nous indiquer si tu fais un EXTEND de PDO ?
Bonjour
Voici ma class
Merci
Voici ma class
class 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
je me demande si je ne dois pas appeler la fonction init comme ceci
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 ceci
public static function NewPass($id_adherent, $passActuel, $newPassUn, { $newPassDe) { self::init(); $req = self::$db->prepare('SELECT id_adherent FROM tb_adherent WHERE username = :username');