Partage
  • Partager sur Facebook
  • Partager sur Twitter

modifier un membre

13 juin 2021 à 11:39:25

Bonjour je souhaite ajouter la possibilité de modifier un utilisateur, voici mon code : 

if (isset($_POST['validerModifierUser'])) {
	$email=$_POST['email'];
	$pass=$_POST['hpass'];
	$nom=$_POST['nom'];
	$prenom=$_POST['prenom'];
	$tel=$_POST['tel'];

	$membre = (object) array(
		"nom"=>$nom,
		"prenom"=>$prenom,
		"email"=>$email,
		"tel"=>$tel,
	);

	$db->modifierMembre($membre->idMembre,$membre);
}



    public function modifierMembre(int $idMembre, object $membre): void {
        //à faire
        try {
            $requete_prepare = PdoCine::$monPdo->prepare('UPDATE membres set nom=:nom, prenom=:prenom,
            tel=:tel, email=:email WHERE membre.idMembre=:idMembre');

            $pdoStat->bindValue(':nom', $membre->nom,PDO::PARAM_STR);
            $pdoStat->bindValue(':prenom', $membre->prenom,PDO::PARAM_STR);
            $pdoStat->bindValue(':email', $membre->email,PDO::PARAM_STR);
            $pdoStat->bindValue(':tel', $membre->tel,PDO::PARAM_STR);
            $requete_prepare->execute();
        } catch (Exception $e) {
            die('<div class = "erreur">Erreur dans la requête !<p>'
                    . $e->getmessage() . '</p></div>');
        }
    }

Mais quand je modifie un champ et que je clique sur modifier, rien ne se passe, pouvez-vous m'aider ? merci


-
Edité par MastrAtuss 13 juin 2021 à 11:40:43

  • Partager sur Facebook
  • Partager sur Twitter
13 juin 2021 à 12:01:34

Bonjour,

Ta table s'appelle soit "membres" soit "membre" mais dans tous les cas tu as une contradiction dans ta requête préparée.

UPDATE membres ... WHERE membre.idMembre...

  • Partager sur Facebook
  • Partager sur Twitter
13 juin 2021 à 12:04:16

Bien que ce préfixage ne soit de toute manière pas utile, il faudrait activer les erreurs PDO pour voir ce genre de boulettes parce que ton try/catch a l'air inutile (ça ne devrait pas être à ta méthode de gérer les erreurs SQL non plus et si c'est juste pour l'afficher par un die, PHP fait plus et mieux par défaut).

Il y a le marqueur :idMembre qui n'est jamais bindé aussi.

Ah, et afficher les erreurs PHP peut être aussi parce que la variable $pdoStat n'existe pas, c'est $requete_prepare ... Ca devrait te valoir une notice: undefined variable pdoStat suivie d'une erreur fatale: call to a member function bindValue on null

> $membre->idMembre

Je ne vois pas de clé 'idMembre' dans le tableau que tu castes en objet/stdclass et si tu fournis cet id via cet objet, ton paramètre $idMembre en est inutile.

-
Edité par julp 13 juin 2021 à 12:11:56

  • Partager sur Facebook
  • Partager sur Twitter
13 juin 2021 à 15:15:28

Bonjour merci pour vos réponses, voici les modifications: 

    public function modifierMembre(int $idMembre, object $membre): void {
        //à faire
        try {
            $requete_prepare = PdoCine::$monPdo->prepare('UPDATE membres set nom=:nom, prenom=:prenom,
            tel=:tel, email=:email, idMembre=:idMembre WHERE membres.idMembre=:idMembre');
     
            $requete_prepare->bindValue(':nom', $membre->nom,PDO::PARAM_STR);
            $requete_prepare->bindValue(':prenom', $membre->prenom,PDO::PARAM_STR);
            $requete_prepare->bindValue(':email', $membre->email,PDO::PARAM_STR);
            $requete_prepare->bindValue(':tel', $membre->tel,PDO::PARAM_STR);
            $requete_prepare->execute();
        } catch (Exception $e) {
            die('<div class = "erreur">Erreur dans la requête !<p>'
                    . $e->getmessage() . '</p></div>');
        }
    }
if (isset($_POST['validerModifierUser'])) {
	$email=$_POST['email'];
    $pass=$_POST['hpass'];
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $tel=$_POST['tel'];
 
    $membre = (object) array(
        "nom"=>$nom,
        "prenom"=>$prenom,
        "email"=>$email,
        "tel"=>$tel,
    );
 
    $db->modifierMembre($membre->idMembre,$membre);

}

Pour ce qui est du paramètre $idMembre, je ne vois pas comment le remplacer... 



  • Partager sur Facebook
  • Partager sur Twitter
13 juin 2021 à 15:59:49

Rends-toi service, ne travaille pas à l'aveugle, commence par afficher TOUTES les erreurs, celles de PHP (display_errors = on dans ton php.ini) et de PDO (cf dernier lien de ma signature). Pourquoi chercher les erreurs que PHP peut t'indiquer ?

(on ne sait pas où est instancié $db d'ailleurs)

-
Edité par julp 13 juin 2021 à 16:07:44

  • Partager sur Facebook
  • Partager sur Twitter