Se connecter avec
S'enregistrer | Connectez-vous
Votre question

formulaire radio, checkbox, select et insertion base MySql

Dernière réponse : dans Programmation
Partagez
16 Avril 2006 21:47:41

Bonjour à toutes et tous,

Je suis un nouveau futur webmaster qui ne demande qu'à apprendre et comprendre pour pouvoir avancer.
Merci d'avance pour l'aide que vous pourrez m'apporter.
Voici mon problème:

J'ai créé un formulaire d'inscription pour le site que je compte mettre en ligne plus tard. Avec beaucoup de temps et de patience je suis arrivé à obtenir un formulaire qui fonctionne trés bien avec les champs login, password, nom, prénom et email.
Seulement voilà, j'ai besoin de rajouter dans mon formulaire les indications suivantes: bouton radio du sexe de la personne, date de naissance, origine de sa venue, parrain éventuel et checkbox règlement.
J'ai donc intégrer dans mon formulaire les infos suivantes :

  1. <tr>
  2. <td valign="top"><input name="sexe" value="F" type="radio" id="sexe" />Féminin</td>
  3. <td valign="top"><input name="sexe" value="M" type="radio" id="sexe" />Masculin</td>
  4. </tr>

  1. <tr>
  2. <td>Votre date de naissance:<br /></td>
  3. <td valign="top"><select name="jour" type="enum" id="age">
  4. <option value="">Jour
  5. <option value="1">1................<option value="31">31
  6. </select>
  7. <select name="mois" type="enum" id="age">
  8. <option value="">Mois
  9. <option value="01">janvier..................<option value="12">décembre
  10. </select>
  11. <select name="annee" type="enum" id="age">
  12. <option value="">Année
  13. <option value="1920">1920..............<option value="2006">2006
  14. </select></td>
  15. </tr>

  1. <tr>
  2. <td>Comment avez-vous connu ..........?<br /></td>
  3. <td valign="top"><select name="origine" type="enum" id="origine">
  4. <option value="0">Choix
  5. <option value="1">Un annuaire
  6. <option value="2">Un lien
  7. <option value="3">Un moteur de recherche
  8. <option value="4">Une publicité
  9. <option value="5">Au hasard
  10. <option value="6">Un ami
  11. <option value="7">Autre
  12. </select></td>
  13. </tr>

  1. <tr>
  2. <td>Parrainage:<br /></td>
  3. <td valign="top"><input name="parrain" type="text" id="parrain" size=12 maxlength=50></td>
  4. </tr>

et enfin:
  1. <tr>
  2. <td>J'accepte le règlement et m'engage à le respecter<br />
  3. <td valign="top"><input type="checkbox" name="reglement" id="reglement"></td>
  4. </tr>


Le problème, c'est que je ne sais pas comment je dois modifier ma base de données pour que ces nouvelles valeurs y soient intégrées et que tous ces rajouts me provoquent des erreurs lorsque je valide mon formulaire et que je n'arrive pas à les rectifier.
Exemple: si je rajoute $age = $_POST['age']; j'ai une erreur de variable à la validation idem si je ne coche pas la case du règlement j'ai une autre erreur à l'écran.........
Et là je ne sais pas comment gérer ces nouvelles erreurs dans mon code donc si quelqu'un pouvait m'aider voire si un webmaster confirmé accepterait de m'apporter son aide il serait le bienvenu.

Exemple de gestion d'erreur dans mon code qui fonctionne parfaitement:

  1. else if($_POST['prenom'] == ""){
  2. header("Location:inscription.php?erreur=prenom");
  3. }

résultat:
  1. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "prenom")) {?>
  2. <p>Veuillez saisir votre prénom.</p>
  3. <?php } ?>


J'attends vos réponses avec impatience mais soyez indulgents svp car je pratique depuis peu et j'ai besoin d'explications détaillées.
Merci

Edit: petite précision: parmis ces nouveaux champs seuls le champ sexe et règlement seront obligatoires
16 Avril 2006 22:22:24

balise [code] :o 
16 Avril 2006 22:24:48

KangOl ????????
Désolé je te comprend pas
Contenus similaires
17 Avril 2006 13:32:47

Inutile que je perde davantage de temps sur ce forum car de toute évidence ou bien personne ne connaît la réponse ici ou bien vous refusez de communiquer votre savoir !!!

Salut
17 Avril 2006 13:41:09

Ho ! faut pas le prendre comme ca ! On te demande juste d'éditer ton message et d'entrer ton code source des balise [code] et [ /code] de manière à ce que ce soit plus lisible ! Rien de plus ...

Aussi, bien que ton message soit bien écris, je n'ai pas compris ton problème. Quel est exactement le soucis avec le code que tu postes ?
17 Avril 2006 14:42:52

Voilà j'ai rééditer tout le message avec les balises et je l'aie modifié aussi pour la compréhension.
17 Avril 2006 14:59:36

J'arrive pas trop a te suivre dans ton truc , donc , pourai tu métre tel quel les 2 fichiers que tu as ...

Puis petit conceil , Teste toujour ton script en cours de route , juste avec echo sa s'est un petit conceil de newb , une erreur est plus facilement retrouvable sur 10 lignes que 30 .....

Puis pour ton formulaire ,

  1. # <select name="jour" type="enum" id="age">
  2. # <option value="">Jour
  3. # <option value="1">1................<option value="31">31
  4. # </select>


Tu peux remplacer par
  1. $nb=0
  2. For($i=1,$i<32,$i++)
  3. {
  4. $nb++
  5. echo"<option value="$nb">$nb";
  6. }


Mais attention , ton formulaire s'appelleras inscription.php , mais pas .html
17 Avril 2006 15:04:01

bon :
1/ la mise en page par tableau c'était il y a 10 ans :o  Regarde du coté des css et de l'xhtml (et plus précisément du coté des balises label, fieldset et legend)
2/ un id est par définition unique :o 
3/ le type="enum" des <select> est inutile. je me demande meme si c'est correct !
4/ et si tu donnais les erreurs que tu obtiens ? on pourrait peut etre t'aider plus ...
17 Avril 2006 15:12:22

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\ok\inscription.php on line 38

qui correspond à :
  1. if(mysql_num_rows($result) != 0){
  2. while($row = mysql_fetch_array($result)){
  3. if($row["login"] == $_POST["login"]){
  4. header("Location:inscription.php?erreur=login");
  5. break;
  6. }
  7. else if($row["email"] == $_POST["email"]){
  8. header("Location:inscription.php?erreur=email1");
  9. break;}}
  10. }


ou encore:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\ok\inscription.php:38) in c:\program files\easyphp1-8\www\ok\inscription.php on line 51
qui correspond à:
  1. header("Location:inscription.php?add=ok");


Mais les erreurs c'est normal puisque je ne sais pas comment je dois remplir les nouveaux champs correspondants dans ma table de données MySql et que je n'ai pas encore intégré les gestions d'erreurs dans mon formulaire.
Sans ces nouveaux champs mon formulaire tourne parfaitement sans aucune erreurs de header ou d'arguments valides.
Ma question c'est comment dois je créer ma table sql et quels sont les codes erreurs que je dois intégrer dans ma page inscription.
Et enfin, comment faire pour que ces nouveaux champs une fois dans la table SQL se remplissent comme les autres.
Sinon as tu msn ? As tu déjà une bonne expérience de la création de site et peux tu m'offrir ton aide ?
J'ai besoin de comprendre c'est clair sinon je n'avancerais pas mais je ne peux pas non plus vous dévoiler mes codes complets car le site que je compte réaliser comporte des intérêts financier.
17 Avril 2006 15:26:42

allez, avoues que c'est pas toi qui a coder ce qui existe déjà !
Parce que c'est exactement le même mode opératoire que pour les premiers champs que tu aurais du appliquer.

sinon pour les erreurs : la seconde est du a la première apparement
la première viens du faite que ta requetes n'est pas bonne. ajoute un
  1. or die(mysql_error())
derriere ta requete ...

et il serait peut etre temps d'apprendre le language dans lequel on code avant de taper des lignes sans rien comprendre ...
17 Avril 2006 15:50:00

J'ai tout fais tout seul et tu ne comprends rien a ce que je demande donc t'es pas balaise du tout ou tu le fais exprés.
C'est ma base sql qui n'est pas correcte et je vois que tu ne sais pas non plus comment faire.
Ma demande c'est de savoir si quelqu'un peut me réécrire ma table SQL avec tous ces éléments rajoutés ainsi que les gestions d'erreurs à rajouter à mon code pour être sûr que les nouveaux arrivants aient cochés la case règlement entre autre!
17 Avril 2006 16:50:20

alors :
1/ on a pas fait BAC V nous :o  On est pas devin. on peut pas deviner la structure de ta base. Alors soit tu nous la donne soit tu te débrouilles tout seul.
2/ pour tes controles d'entrées, c'est exactement le meme principe que pour les autres champs. Je vois pas ce qui te bloque.

[humour] ps : comme dit le proverbe : Celui qui ne sais pas se faire comprendre d'un autre est un imbecile. [/humour]
17 Avril 2006 17:38:26

Bon, je tourne en rond et je n'avance pas donc j'ai viré tous les nouveaux champs pour les replacer un par un pour mieux les gérer.

Je commence par la date de naissance donc à l'écran j'ai :
Votre date de naissance: jour mois année avec mes barres de défilements mais le problème ici c'est que seule la dernière donnée c'est à dire l'année est enregistrée dans ma base.
Comment faut-il que je fasse pour enregistrer la date de naissance en entier dans le même champ (date) SQL ???

Voici le code:
  1. <tr>
  2. <td>Votre date de naissance:<br /></td>
  3. <td valign="top"><select name="age" type="text" id="age">
  4. <option value="">Jour
  5. <option value="01">01<option value="02">02<option value="03">03<option value="04">04<option value="05">05<option value="06">06
  6. <option value="07">07<option value="08">08<option value="09">09<option value="10">10<option value="11">11<option value="12">12
  7. <option value="13">13<option value="14">14<option value="15">15<option value="16">16<option value="17">17<option value="18">18
  8. <option value="19">19<option value="20">20<option value="21">21<option value="22">22<option value="23">23<option value="24">24
  9. <option value="25">25<option value="26">26<option value="27">27<option value="28">28<option value="29">29<option value="30">30
  10. <option value="31">31
  11. </select>
  12. <select name="age">
  13. <option value="">Mois
  14. <option value="01">janvier<option value="02">février<option value="03">mars<option value="04">avril<option value="05">mai
  15. <option value="06">juin<option value="07">juillet<option value="08">août<option value="09">septembre<option value="10">octobre
  16. <option value="11">novembre<option value="12">décembre
  17. </select>
  18. <select name="age">
  19. <option value="">Année
  20. <option value="1920">1920<option value="1921">1921<option value="1922">1922<option value="1923">1923<option value="1924">1924
  21. <option value="1925">1925<option value="1926">1926<option value="1927">1927<option value="1928">1928<option value="1929">1929
  22. <option value="1930">1930<option value="1931">1931<option value="1932">1932<option value="1933">1933<option value="1934">1934
  23. <option value="1935">1935<option value="1936">1936<option value="1937">1937<option value="1938">1938<option value="1939">1939
  24. <option value="1940">1940<option value="1941">1941<option value="1942">1942<option value="1943">1943<option value="1944">1944
  25. <option value="1945">1945<option value="1946">1946<option value="1947">1947<option value="1948">1948<option value="1949">1949
  26. <option value="1950">1950<option value="1951">1951<option value="1952">1952<option value="1953">1953<option value="1954">1954
  27. <option value="1955">1955<option value="1956">1956<option value="1957">1957<option value="1958">1958<option value="1959">1959
  28. <option value="1960">1960<option value="1961">1961<option value="1962">1962<option value="1963">1963<option value="1964">1964
  29. <option value="1965">1965<option value="1966">1966<option value="1967">1967<option value="1968">1968<option value="1969">1969
  30. <option value="1970">1970<option value="1971">1971<option value="1972">1972<option value="1973">1973<option value="1974">1974
  31. <option value="1975">1975<option value="1976">1976<option value="1977">1977<option value="1978">1978<option value="1979">1979
  32. <option value="1980">1980<option value="1981">1981<option value="1982">1982<option value="1983">1983<option value="1984">1984
  33. <option value="1985">1985<option value="1986">1986<option value="1987">1987<option value="1988">1988<option value="1989">1989
  34. <option value="1990">1990<option value="1991">1991<option value="1992">1992<option value="1993">1993<option value="1994">1994
  35. <option value="1995">1995<option value="1996">1996<option value="1997">1997<option value="1998">1998<option value="1999">1999
  36. <option value="2000">2000<option value="2001">2001<option value="2002">2002<option value="2003">2003<option value="2004">2004
  37. <option value="2005">2005<option value="2006">2006
  38. </select></td></tr>
17 Avril 2006 19:03:43

Deja , a la place de encombrer la téte avec un long script en HTML , tu est mieu a faire <input type="text" value="on_ne_sait_pas_trop">puis un bouton submit ... sa allégeras fort ton script , puis comme sa tu met dés le début de ton script en PHP $truc=$_post['truc']

On t'as jamais expliquer , qui falait tenter simple et apré améliorer le grafisme

Enfain , ton script HTML ( inscription ) on s'en moque , se qui est plus interessant , s'est l'integralité de ton script de ton script PHP ... ( certes , je ne suis pas fort , et je galére pour utiliser le SQL dans un script PHP , mais je donne accés a tout , sa facilite grandement la compréanction du script .... )
17 Avril 2006 19:05:34

elec > tu peux faire un effort de rédaction et ecrire en francais stp ? merci :jap: