Ajouter un contact a la BDD s'il n'existe pas

Résolu/Fermé
lza - 27 juil. 2018 à 12:16
 lza - 27 juil. 2018 à 16:09
Bonjour,
j'aimerai ajouter de nouveaux utilisateurs a ma base de données mais je ne trouve pas comment faire la condition d'ajout seulement si l'utilisateur n'existe pas , quel code me permettra de faire cela :( :( :( (c'est exactement comme votre site je m'inscrit avec mon adresse mail qu'une seule fois si je me réinscris on me dit que l'email existe déjà )
( node js, swagger, post , json)

var request = "INSERT INTO users (password, role, firstName, id, userEmail) VALUES ('" + encryptedPass + "','"+ body.role + "','" + Nom+ "','" + id + "','" + body.Email + "')" ;
 console.log(request);
 await cnx.execute(request);
 var body ={
      "password": "password",
      "role": "role",
      "firstName": "Nom + Prénom",
      "id": "id",
      "Email": "Email"
    }
    var dataString = "Nom=" + $("#Nom").val() + "&Prénom=" + $("#Prénom").val() + "&Email=" + $("#Email").val() + "&password=" + $("#password").val() ; 
    $.ajax({
      type: "POST", // le verbe de swagger
      url: "/v1/users/create", 
      data: dataString,
      success: function (data, status, res) { 
        const token = res.getResponseHeader('x-access-token');
        alert("Connexion réussie. Token = " + token);
        },
      error: function (jqXHR, textStatus, errorThrown) {
 
        if (jqXHR.status == 403) {       
          alert("Erreur: accès refusé");
        }
        if (jqXHR.status == 400) {
          alert("Erreur:" + textStatus);        
        }
      }
    });
A voir également:

2 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
27 juil. 2018 à 13:12
Bonjour
C'est plutôt au niveau de ton api v1/users/create que tu dois le gerer je pense.
0
v1/users/create est le chemin vers swagger, je ne vois pas quoi changé :( ... y a pas une fonction insert if not existe ou je ne sais quoi?? ou une condition if email =! email... franchement je suis perdu je ne sais pas comment le faire ..
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
27 juil. 2018 à 14:39
Il faudrait, dans ce cas, ajouter un path suplémentaire à ton swagger afin de vérifier si l'email existe déjà ou non.
https://swagger.io/docs/specification/paths-and-operations/
Un truc du genre :
/v1/users/getBymail?mail=value

et faire pointer ce path vers une méthode qui ira requêter la BDD
Mai bon.. là ce n'est plus vraiment une question de langage de programmation (et surtout pas du JS ) mais plus l'utilisation d'un logiciel/framework... enfin... c'est du spécifique quoi...

Je pense que tu devrais commencer par consulter attentivement les docs https://swagger.io/docs/
0
d'accord... je vais voir tout ça . Merci beaucoup
0
Pinzou76 Messages postés 614 Date d'inscription dimanche 17 septembre 2017 Statut Membre Dernière intervention 25 février 2019 191
27 juil. 2018 à 14:06
Bonjour,
Tu pourrais faire un select dans ta table sur l'email, compter le nombre de résultats.
S'il est supérieur à 0, alors le contact existe déjà.
0
bonjour , merci pour votre réponse. pourriez vous m'expliqué ça un peu plus :(
0
Pinzou76 Messages postés 614 Date d'inscription dimanche 17 septembre 2017 Statut Membre Dernière intervention 25 février 2019 191
27 juil. 2018 à 16:05
Eh bien
-l'utilisateur qui souhaite s'inscrire rentre son email
-vous récupérez cet email dans une variable ex: userEmail
-vous parcourez votre table des utilisateurs avec un SELECT, filtre suivant: [colonne email] = userEmail
-Vous comptez le nombre de dataRow retournées par le SELECT (il doit y avoir une fonction count ou similaire)
-Si le nombre est > 0, alors il y a au moins un résultat: l'email est déjà présent dans la table, l'utilisateur est déjà inscrit.
-Sinon, il peut s'inscrire

Voilà, j'ai intentionnellement pas mis de code car je suis rouillé en PhP et je préférais ne pas vous induire en erreur concernant la syntaxe
0
ahhh ok ok c'est vraiment gentil :) merci infiniment :) :)
0