8719 sujets

Développement web côté serveur, CMS

Bonjour,
J'aurais besoin de vous, je cherche à récupérer l'id d'un utilisateur (id_utilisateur), garce à du DAO et à des functions.
Quand un utilisateur s’inscrit, une note doit automatiquement se créer.
L'utilisateur s'inscrit bien mais la note ce créé pas, car la valeur que je récupère est NULL
(je sais que la valeur est null car j'ai fais un var_dump de celle-ci).
Voici le message d'erreur :

Erreur lors de la requête SQL : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_utilisateur' cannot be null SQL : INSERT INTO note(id_utilisateur) VALUES(:id_utilisateur)

Pour créer une note, il faut aller récupérer l'id_utilisateur de l’utilisateur qui vient juste de s’inscrire. Donc pour récupérer cet id, je fais un select qui va selectionner l'id_utilisateur en comparent l'email de l'utilisateur.

Code de l'appel du DAO :
(ps : $newUtilisateur est toutes les données du nouvel utilisateur inscrit)

 $id_recuperer = $dao->select_id($newUtilisateur->get_id_utilisateur());

    var_dump($id_recuperer);

    $dao = new NoteDAO();

    $dao->insert($id_recuperer);


Code de la function qui donc recupéré l'id_utilisateur par rapport à l'email de l'utilisateur :

function select_id($email){
    
   //  Récupération de l'id en rapport avec l'email
    $sql = "SELECT id_utilisateur FROM utilisateur WHERE email = :email";

    try {
        $sth = $this->pdo->prepare($sql);
        $sth->execute(array(
            
            ':email' => $email
        ));
        $row = $sth->fetch(PDO::FETCH_ASSOC);
    } catch (PDOException $ex) {
        throw new Exception("Erreur lors de la requête SQL : ".$ex->getMessage());
    }
}


Code du insert pour créer une note :

   public function insert($id_recuperer){

        $sql = "INSERT INTO note(id_utilisateur) VALUES(:id_utilisateur)";
        $params = array(":id_utilisateur" => $id_recuperer );     
        try {
            $sth = $this->executer($sql, $params);
            $nb = $sth->rowcount();
        } catch (PDOException $e) {
            die("Erreur lors de la requête SQL : " . $e->getMessage());
        }
        return $nb;
    
    }


Pouvez vous m'aider ?
Merci Marjorie Smiley cligne
Modifié par MlleYouma (17 Mar 2020 - 14:34)
Modérateur
Et l'eau,

ta fonction/méthode select_id ne retourne rien....

Au passage, tu n'as pas l'impression de te répéter ?

nom de méthode :
- sql
- try
- pdo execute / prepare
- catch
Modifié par niuxe (18 Mar 2020 - 01:56)