Se connecter avec
S'enregistrer | Connectez-vous

Formulaire

Dernière réponse : dans Programmation

Bonjour tout le monde,
voila je me confronte à un petit problème, je voudrai faire un formulaire dans lequel l'utilisateur sait de suite si le pseudo qu'il a choisit est encore disponible ou non.
Pour le moment j'ai fait ceci:
fichier formulaire.html:
  1. <body>
  2. <div class="cadre">
  3. <h1>Inscription</h1>
  4. <form action="verif_inscription.php" method=GET enctype="text/plain">
  5. <table class=formulaire>
  6. <tr>
  7. <th>Pseudo:</th><td colspan=2>
  8. <input name="pseudo" TYPE=TEXT /></td>
  9. </tr>
  10. <tr>
  11. <th>Mot de passe:</th><td colspan=2>
  12. <input name="passwordUtilisateur" TYPE=PASSWORD /></td>
  13. </tr>
  14. <tr>
  15. <th></th>
  16. </tr>
  17. <tr>
  18. <th>Confirmer le mot de passe:</th><td colspan=2>
  19. <input name="v_passwordUtilisateur" TYPE=PASSWORD /></td>
  20. </tr>
  21. <tr>
  22. <th>Adresse mail:</th><td colspan=2>
  23. <input name="adresseUtilisateur" size=50 TYPE=TEXT /></td>
  24. </tr>
  25. <tr>
  26. <th>Quels sont vos jeux:</th><td>
  27. <input type=checkbox name="jeux[]" value=bf2><img src="Images/bf2.png" class=im_g alt="image">Battlefield 2<br>
  28. <input type=checkbox name="jeux[]" value=bfbc2><img src="Images/bfbc22.png" class=im_g alt="image">Battlefield Bad company 2<br>
  29. <input type=checkbox name="jeux[]" value=lol><img src="Images/lol2.png" class=im_g alt="image">League of Legend<br>
  30. <input type=checkbox name="jeux[]" value=gta_san_andreas><img src="Images/gta2.png" class=im_g alt="image">GTA San Andreas<br>
  31. <input type=checkbox name="jeux[]" value=combat_arms><img src="Images/combat.png" class=im_g alt="image">Combat Arms<br>
  32. <input type=checkbox name="jeux[]" value=autre><img src="Images/jeu.png" class=im_g alt="image">Autres jeux<br>
  33. </td>
  34. </tr>
  35. <tr>
  36. <tr>
  37. <td colspan=3 class="bouton">
  38. <input type="reset" value=Reset>
  39. <input type="submit" value=Valider name="send">
  40. </td></tr>
  41. </table>
  42. </form>
  43. </div>
  44. </body>


Puis le fichier verif_inscription.php
  1. <HTML>
  2. <HEAD>
  3. <script language="JavaScript">
  4. // une fonction javascript permettant de revenir a la page precedente
  5. <!--
  6. function precedent()
  7. {
  8. document.write('<form><input type="button" value="Precedent" onclick="history.back();"></form>');
  9. }
  10. -->
  11. </script>
  12. </HEAD>
  13. <BODY>
  14. <?php
  15. // on se connecte à MySQL
  16. $db = mysql_connect('localhost', 'root', '');
  17. // on sélectionne la base
  18. mysql_select_db('MyDB',$db);
  19.  
  20. if (isset($_GET['pseudo'])){
  21. $pseudo=$_GET['pseudo'];
  22. $sql = "SELECT pseudo from UTILISATEUR WHERE ((pseudo) like '$pseudo')";
  23. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  24. $nbr = mysql_num_rows($req);
  25. if ($nbr!=0){
  26. echo "Ce pseudo existe deja, merci d'en entrer un autre.";
  27. echo "<script language='JavaScript'>precedent()</script> ";
  28. exit();
  29. }
  30. }
  31. if (isset($_GET['passwordUtilisateur'])){
  32. $passwordUtilisateur=$_GET['passwordUtilisateur'];
  33. }
  34. if (isset($_GET['v_passwordUtilisateur'])){
  35. $v_passwordUtilisateur=$_GET['v_passwordUtilisateur'];
  36. }
  37. if (isset($_GET['adresseUtilisateur'])){
  38. $adresseUtilisateur=$_GET['adresseUtilisateur'];
  39. // on ajoute l'enregistrement
  40. $sql = "SELECT adresseUtilisateur from UTILISATEUR WHERE ((adresseUtilisateur) like '$adresseUtilisateur')";
  41. // on envoie la requête
  42. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  43. }
  44. $j=0;
  45. for ($i=0; $i<100; $i++){
  46. if (isset($_GET['jeux'][$i])){
  47. $jeux[$i]=$_GET['jeux'][$i];
  48. $j++;
  49. }
  50. }
  51. if (isset($_GET['autre_jeu'])){
  52. $autre_jeu=$_GET['autre_jeu'];
  53. }
  54. $domain = explode('@', $adresseUtilisateur);
  55.  
  56. // dans un premier temps on regarde si l'adresse mail a la forme d'une adresse mail cad nananere@machin.quelquechose
  57. if(filter_var($adresseUtilisateur, FILTER_VALIDATE_EMAIL)){
  58. // on regarde ensuite en questionnant le machin.quelquechose pour voir si il existe.
  59. if (!checkdnsrr($domain[1]))
  60. //si ce n'est pas le cas alors on affiche le message en dessous
  61. echo "Adresse Mail invalide, merci d'inscrire une adresse e-mail valide.";
  62. //si machin.quelquechose existe alors on poursuit
  63. else{
  64. // on regarde si la valeur recu par le bouton nommé send est Validé
  65. if ($_GET['send']=="Valider") {
  66. // on regarde ici si les champs sont remplis ou si il y en a des vides
  67. if (($pseudo=="")||($passwordUtilisateur=="")||($v_passwordUtilisateur=="")||($adresseUtilisateur=="")){
  68. //si c'est le champs pseudo qui est vide alors on envoi le message...
  69. if($pseudo==""){
  70. print("Veuillez saisir votre pseudo<BR>\n");
  71. }
  72. //et pareil pour chaque champs
  73. if($passwordUtilisateur==""){
  74. print("Veuillez saisir le mot de passe<BR>\n");
  75. }
  76. if($v_passwordUtilisateur==""){
  77. print("Veuillez confirmer votre mot de passe espece de $pseudo<BR>\n");
  78. }
  79. if($adresseUtilisateur==""){
  80. print("Veuillez saisir votre adresse e-mail<BR>\n");
  81. }
  82. if($j==0){
  83. print("Veuillez indiquer a quels jeux vous jouez svp.<BR>\n");
  84. }
  85. echo "<script language='JavaScript'>precedent()</script> ";
  86. }
  87. else {
  88. if($passwordUtilisateur!=$v_passwordUtilisateur){
  89. print("Les deux mots de passe ne sont pas identique.<BR>\n");
  90. echo "<script language='JavaScript'>precedent()</script> ";
  91. }
  92. else{
  93.  
  94. echo "Récapitulatif des informations saisies<BR>\n
  95. <UL>
  96. <LI>Pseudo: $pseudo</LI>
  97. <LI>Mail: $adresseUtilisateur</LI>
  98. <LI>Jeux: ";
  99. $nombrejeux=count($jeux);
  100. $nbr=0;
  101. for ($i=0; $i<$nombrejeux; $i++){
  102. if ($nbr==0){
  103. echo "$jeux[$i]";
  104. $nbr++;
  105. }
  106. else{
  107. echo "/ $jeux[$i]";
  108. }
  109.  
  110. }
  111. echo "</LI>";
  112. if ($autre_jeu=="")
  113. echo "";
  114. else
  115. echo "<LI>Autres jeux: $autre_jeu</LI></UL>";
  116.  
  117.  
  118. // on ajoute l'enregistrement
  119. $sql = "INSERT INTO UTILISATEUR (pseudo,passwordUtilisateur,adresseUtilisateur,nbrjeux) VALUES ('$pseudo','$passwordUtilisateur','$adresseUtilisateur','$nombrejeux')";
  120.  
  121. // on envoie la requête
  122. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  123.  
  124.  
  125.  
  126. // on ferme la connexion à mysql
  127. mysql_close();
  128. }
  129. }
  130. }
  131. else {
  132. echo "<p>Vous n'avez pas demandé que les informations soient affichées.<p>";
  133. }
  134. }
  135. }
  136. else{
  137. echo "Adress mail invalide merci de vous inscrire avec un mail valide. <br>";
  138. echo "<script language='JavaScript'>precedent()</script> ";
  139.  
  140. }
  141.  
  142.  
  143. ?>
  144.  
  145. </BODY>
  146. </HTML>


Voila donc je sais que Ajax peut faire cela mais comment?? Car les exemple trouvé sur le net ne me parle pas vraiment.
Merci d'avance

Autres pages sur : formulaire

Lassé par la pub ? Créez un compte

Meilleure solution

Salut,

Explications du process et quelques liens à voir pour comprendre comment faire de l'AJAX correctement.

Pour faire une comparaison 'en live' (j'imagine sans recharger la page alors...) il faut que tu utilises de l'AJAX.
Le principe est simple :
- Tu ajoutes un "écouteur" sur l'évènement onchange de ton champ de texte (http://www.htmlcodetutorial.com/forms/_INPUT_onChange.html)
- Dans cet écouteur, tu fais une requête AJAX vers un script PHP de vérification de pseudo (qui te renverra si le pseudo est libre). Le plus simple est de demander à ta page d'écrire juste "OK" ou "KO" selon la disponibilité du pseudo
(http://www.tizag.com/ajaxTutorial/ajaxbrowsersupport.php)
- Une requête AJAX est asynchrone (en tout cas, elle doit l'être, sinon, c'est mal), donc il faut ajouter un 'écouteur' sur l'vévènement onreadystatechange. Si le code retour est à 200, tout s'est bien passé, ta réponse est disponible à priori.
(http://www.xul.fr/Objet-XMLHttpRequest.html)
- Tu signales que le pseudo est libre ou non (de la façon de ton choix) et active/désactive la soumission du formulaire le cas échéant.

Bonne chance,

Cdt;

bonjour
j'ai un script de vérification du pseudo, à adapter, je sais pas si çà peut te servir:

  1. // *** Redirect if username exists
  2. $MM_flag="MM_insert";
  3. if (isset($_POST[$MM_flag])) {
  4. $MM_dupKeyRedirect="inscription_erreur.php";
  5. $loginUsername = $_POST['Pseudo'];
  6. $LoginRS__query = sprintf("SELECT Pseudo FROM membre WHERE Pseudo=%s", GetSQLValueString($loginUsername, "text"));
  7. mysql_select_db($database_maconnexion, $maconnexion);
  8. $LoginRS=mysql_query($LoginRS__query, $maconnexion) or die(mysql_error());
  9. $loginFoundUser = mysql_num_rows($LoginRS);
  10.  
  11. //if there is a row in the database, the username was found - can not add the requested username
  12. if($loginFoundUser){
  13. $MM_qsChar = "?";
  14. //append the username to the redirect page
  15. if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
  16. $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
  17. header ("Location: $MM_dupKeyRedirect");
  18. exit;
  19. }
  20. }

zeb a dit :
Allez la_lvlouche, tu nous as montré du code-qui-marche-pas.
Présente-nous maintenant le code-qui-roxe-tout, stp.

oki très bien zeb :) 

donc formulaire.php:
  1. <head>
  2. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  3. <title> inscription </title>
  4. <script type="text/javascript">
  5. function writediv(texte)
  6. {
  7. document.getElementById('pseudobox').innerHTML = texte;
  8. }
  9. function verifPseudo(pseudo)
  10. {
  11. if(pseudo != '')
  12. {
  13. if(pseudo.length<2)
  14. writediv('<span style="color:#cc0000"> ce pseudo est trop court</span>');
  15. else if(pseudo.length>30)
  16. writediv('<span style="color:#cc0000"> ce pseudo est trop long</span>');
  17. else if(texte = file('verifpseudo.php?pseudo='+escape(pseudo)))
  18. {
  19. if(texte == 1)
  20. writediv('<span style="color:#cc0000"> ce pseudo est deja pris</span>');
  21. else if(texte == 2)
  22. writediv('<span style="color:#1A7917"> ce pseudo est libre</span>');
  23. else
  24. writediv(texte);
  25. }
  26. }
  27.  
  28. }
  29. function writemdp(texte)
  30. {
  31. document.getElementById('mdpbox').innerHTML = texte;
  32. }
  33.  
  34. function verifmdp(mdp2)
  35. {
  36. if(mdp2!='')
  37. {
  38. if($a!='')
  39. {
  40. if(mdp2==$a)
  41. {
  42. writemdp('<span style="color:#1A7017">verification correcte</span>');
  43. }
  44. else
  45. {
  46. writemdp('<span style="color:#cc0000">verification incorrecte</span>');
  47. }
  48. }
  49. }
  50. }
  51. function writevide(texte)
  52. {
  53. document.getElementById('vide').innerHTML = texte;
  54. }
  55. function writevide2(texte)
  56. {
  57. document.getElementById('vide2').innerHTML = texte;
  58. }
  59. function verifvide(mdp1)
  60. {
  61. if(mdp1=='')
  62. writevide('<span style="color:#cc0000">champ obligatoire</span>');
  63. else
  64. writevide('<span style="color:#cc0000"></span>');
  65.  
  66. }
  67. function verifvide2(mail)
  68. {
  69. if(mail=='')
  70. writevide2('<span style="color:#cc0000">champ obligatoire</span>');
  71. else
  72. writevide2('<span style="color:#cc0000"></span>');
  73. }
  74.  
  75. function recupmdp(mdp1)
  76. {
  77. $a=mdp1;
  78. verifvide($a);
  79. }
  80. function file(fichier)
  81. {
  82. if(window.XMLHttpRequest) // FIREFOX
  83. xhr_object = new XMLHttpRequest();
  84. else if(window.ActiveXObject) // IE
  85. xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  86. else
  87. return(false);
  88. xhr_object.open("GET", fichier, false);
  89. xhr_object.send(null);
  90. if(xhr_object.readyState == 4) return(xhr_object.responseText);
  91. else return(false);
  92. }
  93. </script>
  94. </head>
  95.  
  96. <body>
  97. <div class="cadre">
  98. <h1>Inscription</h1>
  99. <form action="verif_inscription.php" method=GET enctype="text/plain">
  100. <table class=formulaire>
  101. <tr>
  102. <th>Pseudo:</th><td>
  103. <input name="pseudo" TYPE=TEXT onblur="verifPseudo(this.value)"/></td><th><div id="pseudobox"></div></th>
  104. </tr>
  105. <tr>
  106. <th>Mot de passe:</th><td colspan=1>
  107. <input name="passwordUtilisateur" TYPE=PASSWORD onblur="recupmdp(this.value)"/></td><th><div id="vide"></div></th>
  108. </tr>
  109. <tr>
  110. <th></th>
  111. </tr>
  112. <tr>
  113. <th>Confirmation mot de passe:</th><td>
  114. <input name="v_passwordUtilisateur" TYPE=PASSWORD onblur="verifmdp(this.value)"/></td><th><div id="mdpbox"></div></th>
  115. </tr>
  116. <tr>
  117. <th>Age:</th><td colspan=1>
  118. <SELECT name="age" size="1">
  119. <?php
  120. $i=6;
  121. while($i<=99)
  122. {
  123. echo "<OPTION value='$i'>";
  124. echo $i;
  125. $i++;
  126. }
  127. ?>
  128.  
  129. </td>
  130. </tr>
  131. <tr>
  132. <th>Sexe:</th><td colspan=1>
  133. <SELECT name="sexe" size="1">
  134. <OPTION value='femme'>femme
  135. <OPTION value='homme'>homme
  136. </SELECT></td>
  137. </tr>
  138. <tr>
  139. <th>Adresse mail:</th><td colspan=1>
  140. <input name="adresseUtilisateur" size=25 TYPE=TEXT onblur="verifvide2(this.value)" /></td><th><div id="vide2"></div></th>
  141. </tr>
  142. <tr>
  143. <th>Quels sont vos jeux:</th><td>
  144. <input type=checkbox name="jeux[]" value=bf2><img src="Images/bf2.png" class=im_g alt="image">Battlefield 2<br>
  145. <input type=checkbox name="jeux[]" value=bfbc2><img src="Images/bfbc22.png" class=im_g alt="image">Battlefield Bad company 2<br>
  146. <input type=checkbox name="jeux[]" value=lol><img src="Images/lol2.png" class=im_g alt="image">League of Legend<br>
  147. <input type=checkbox name="jeux[]" value=gta_san_andreas><img src="Images/gta2.png" class=im_g alt="image">GTA San Andreas<br>
  148. <input type=checkbox name="jeux[]" value=combat_arms><img src="Images/combat.png" class=im_g alt="image">Combat Arms<br>
  149. </td>
  150. </tr>
  151. <tr>
  152. <th>Si autre préciser:</th><td colspan=2>
  153. <textarea name="autre_jeu" rows=1 cols=30></textarea></td>
  154. <!--<input name="autre_jeu" TYPE=TEXT /></td>-->
  155. </tr>
  156. <tr>
  157. <th>Pays:</th><td colspan=1>
  158. <SELECT name="pays" size="1">
  159.  
  160. <?php
  161.  
  162. //echo "<script language='JavaScript'>alert('on entre ici dans du php')</script> ";
  163. mysql_connect("localhost", "root", "") or die(mysql_error( )) ;
  164. mysql_select_db("MyDB") or exit(mysql_error( )) ;
  165. $result = mysql_query("SELECT NomPays, id FROM pays") or exit(mysql_error( )) ;
  166. $i=1;
  167.  
  168.  
  169. while($row = mysql_fetch_array($result))
  170. {
  171. $pays=$row['NomPays'];
  172. $i=$row['id'];
  173. //echo "<script language='JavaScript'>alert('$pays')</script> ";
  174.  
  175. echo"<OPTION value='$pays'>";
  176. echo $pays;
  177.  
  178. $i++;
  179.  
  180. }
  181. ?>
  182. </SELECT></td>
  183. </tr>
  184. <tr>
  185. <tr>
  186. <td colspan=3 class="bouton">
  187. <input type="reset" value=Reset>
  188. <input type="submit" value=Valider name="send">
  189.  
  190. </td></tr>
  191. </table>
  192. </form>
  193. </body>
  194. </html>


Voila pour le code :)  meme si je pense avoir encore quelques imperfections et des choses qui ne servent a rien ;)  mais si ca peu aider quelqu'un c'est avec plaisir.
Si quelqu'un passant par la aurait une amélioration a ajouté il n'y a pas de soucis :) 
Lassé par la pub ? Créez un compte