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 ?
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');