Se connecter / S'enregistrer

Résolu Formulaire: Tester si un champ existe deja dans la base de données

Solutions (6)
Tags :
  • Login
  • Programmation
|
Bonjour,

Voici mon soucis :

Je suis actuellement entrain de réaliser un site web avec un formulaire d'inscription avec lequel l'utilisateur doit entrer des informations tel que son login et mdp.

Dans ma base de données, la table qui est visée est : tblutilisateur

J'aimerai tester si la variable $fLogin (champ du formulaire) est égale à un login de la base de données : rediriger sur ma page d'erreur.

Voici mon code pour la page Ajout_membre.php :

  1. <?php
  2. // Récupération des données du formulaire
  3. $fNom = $_POST['Nom'];
  4. $fPrenom = $_POST['Prenom'];
  5. $fAdresse = $_POST['Adresse'];
  6. $fNPA = $_POST['NPA'];
  7. $fLieu = $_POST['Lieu'];
  8. $fMail = $_POST['Mail'];
  9. $fLogin = $_POST['Login'];
  10. $fTelephone = $_POST['Telephone'];
  11. $fPasswd = $_POST['Passwd'];
  12.  
  13. /* //(if (empty($_POST['NPA'])){
  14. // echo "Vide";
  15. //}
  16. //Else{
  17. //echo "plein";
  18. //} */ //Exemple pour if... Ceci était un test !
  19.  
  20.  
  21. //verification que les champs ne sont pas vides
  22. if(empty($_POST["Nom"]) or empty($_POST["Prenom"])or empty($_POST["Adresse"])and empty($_POST["NPA"])or empty($_POST["Lieu"])or empty($_POST["Mail"])or empty($_POST["Login"])or empty($_POST["Telephone"])or empty($_POST["Passwd"]))
  23. {
  24. header ("location: Formulaire_inscription_fausse.php");
  25. }
  26.  
  27. // Partie qui ne fonctionne pas
  28. elseif($requete==$fLogin){
  29. // Déclaration de la variable SQL
  30. $requete="SELECT * FROM tblutilisateur where Login like '".$fLogin."'"; //"SELECT * FROM tblutilisateur where Login like '$fLogin'"; //"select * from tblutilisateur where Login='".$fLogin."'"
  31. // Execution de la variable SQL
  32. $tabResultats=connexion($requete);
  33.  
  34. header ("location: Formulaire_inscription_fausse.php");
  35. }
  36. // Fin partie qui ne fonctionne pas
  37.  
  38.  
  39. else{
  40. // Déclaration de la variable SQL
  41. $varSQL="INSERT INTO tblutilisateur (Nom,Prenom,Adresse,NPA,Lieu,Email,Login,Passwd,Telephone) VALUES ('".$fNom."','".$fPrenom."','".$fAdresse."',".$fNPA.",'".$fLieu."','".$fMail."','".$fLogin."','".$fPasswd."','".$fTelephone."')";
  42.  
  43. // Execution de la variable SQL
  44. $tabResultats=connexion($varSQL);
  45. echo $varSQL;
  46. header ("location: Formulaire_inscription_juste.php");
  47. }
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55. function connexion($varSQL)
  56. {
  57. //connexion au serveur MySQL
  58. $conx=mysql_connect("localhost","root","") or die("Problème connexion serveur BD");
  59.  
  60. //Connexion à la base de données "etraiteur0"
  61. mysql_select_db("etraiteur0") or die ("problème de connexion avec la base de données");
  62.  
  63. //Exécution de la requête SQL
  64. $tab_resultats=mysql_query($varSQL);
  65.  
  66. //fermeture de la connexion au serveur
  67. mysql_close();
  68.  
  69. //Retourne le tableau
  70. return $tab_resultats;
  71. }
  72.  
  73.  
  74. ?>
  75. </FORM>
  76. </BODY>
  77. </HTML>


La partie en gras est la partie qui ne marche pas !

Voilà, pour information le reste de mon code fonctionne.

Merci d'avance !
Contenus similaires
Meilleure solution
partage
Anonyme |
Salut,

tu ne peux pas utiliser ta fonction connexion() comme tu l'as faite car:
1) pour faire une requete de type SELECT et une autre de type INSERT/UPDATE/DELETE ce n'est pas exactement pareil

2) dans ta fonction, tes informations sur la base de données ne sont connues que dans celle-ci.
bon après si tu arrives à bien faire, tu peux laisser tel que, mais je te conseille de mettre ces informations par exemple tout
en haut de la page, ou bien dans une page que tu inclus derrière avec la fonction include()

3) tout ce qui est dit par OmaR est vrai =)

- pour une requete SELECT, voilà comment ça fonctionne:
  1. $sql = "SELECT * FROM tblutilisateur where Login = '".$fLogin."'";
  2. $requete = mysql_query($sql);
  3. $utilisateur = mysql_fetch_object($requete);


puis pour récupérer les infos de la BDD, tu fais comme ca par exemple:
  1. $login = $utilisateur['Login'];
  2. $mot_de_passe = $utilisateur['Mot_de_passe'];

pour compter le nombre de lignes c'est
  1. $nbUtilisateurs = $mysql_num_rows($requete);


- pour requete de type INSERT, UPDATE ou DELETE c'est plus simple
  1. $sql = "INSERT INTO tblutilisateur (Nom,Prenom,Adresse,NPA,Lieu,Email,Login,Passwd,Telephone) VALUES ('".$fNom."','".$fPrenom."','".$fAdresse."',".$fNPA.",'".$fLieu."','".$fMail."','".$fLogin."','".$fPasswd."','".$fTelephone."')";
  2. mysql_query($sql);


Pour empêcher les injections SQL, utilise la fonction mysql_real_escape_string().
  • Commenter cette solution |
Score
1
òh
òi
, Modérateur |
fredoch85 a dit :
c'est quoi "NPA"

Le nom d'une colonne dans la table
  • Commenter cette réponse |
Score
0
òh
òi
|
Anonyme a dit :
Salut,

tu ne peux pas utiliser ta fonction connexion() comme tu l'as faite car:
1) pour faire une requete de type SELECT et une autre de type INSERT/UPDATE/DELETE ce n'est pas exactement pareil

2) dans ta fonction, tes informations sur la base de données ne sont connues que dans celle-ci.
bon après si tu arrives à bien faire, tu peux laisser tel que, mais je te conseille de mettre ces informations par exemple tout
en haut de la page, ou bien dans une page que tu inclus derrière avec la fonction include()

3) tout ce qui est dit par OmaR est vrai =)

- pour une requete SELECT, voilà comment ça fonctionne:
  1. $sql = "SELECT * FROM tblutilisateur where Login = '".$fLogin."'";
  2. $requete = mysql_query($sql);
  3. $utilisateur = mysql_fetch_object($requete);


puis pour récupérer les infos de la BDD, tu fais comme ca par exemple:
  1. $login = $utilisateur['Login'];
  2. $mot_de_passe = $utilisateur['Mot_de_passe'];

pour compter le nombre de lignes c'est
  1. $nbUtilisateurs = $mysql_num_rows($requete);


- pour requete de type INSERT, UPDATE ou DELETE c'est plus simple
  1. $sql = "INSERT INTO tblutilisateur (Nom,Prenom,Adresse,NPA,Lieu,Email,Login,Passwd,Telephone) VALUES ('".$fNom."','".$fPrenom."','".$fAdresse."',".$fNPA.",'".$fLieu."','".$fMail."','".$fLogin."','".$fPasswd."','".$fTelephone."')";
  2. mysql_query($sql);


Pour empêcher les injections SQL, utilise la fonction mysql_real_escape_string().



c'est quoi "NPA"
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par Kami31.
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci beaucoup je vais essayer d'arranger tout ceci. Je vous remercie tout les 2 pour votre aide précieuse.
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Quelques remarques :
1) Il ne faut pas utiliser de LIKE dans ta requête SQL.
2) Il faut échapper les données que tu passes dans ta requête SQL sinon tu t'exposes aux SQL Injections
3) Et pour savoir si ce login existe déjà, tu peux faire un SELECT d'un champ dans la requête où le login est égal à celui passé (échappé), et ensuite, compter le nombre de lignes retournées (mysql_num_rows). Ou sinon faire un COUNT et récupérer la valeur retournée
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS