Votre question

[PHP & SQL] Création de compte (Ajout d'un champ)

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
26 Avril 2007 13:51:34

Salut à tous...
J'ai fait un site simple où les gens peuvent se créer un compte, cependant j'ai ajouté une nouvelle colonne dans la table des comptes de ma base de donnée SQL.
Le formulaire que voici n'est donc plus bon, il manque une valeur a renseigner.:
  1. <?php
  2.  
  3. include 'sqlcfg_realm.php';
  4. include 'sql.php';
  5.  
  6. print '<html><head><title>Création de compte</title></head>';
  7.  
  8. function addUser() {
  9. if (empty($_POST)) return false; // nothing to see here
  10.  
  11. global $config, $msg, $error;
  12.  
  13.  
  14. if (empty($_POST['username']))
  15. return 'Nom d utilisateur invalide';
  16.  
  17. if (empty($_POST['email']))
  18. return 'Veuillez indiquer une adresse e-mail';
  19.  
  20. if (check_mail($_POST['email']) !== true)
  21. return 'Votre e-Mail est invalide';
  22.  
  23. if (empty($_POST['password'][0]) || empty($_POST['password'][1]))
  24. return 'Veuillez choisir un mot de passe';
  25.  
  26. if ($_POST['password'][0] !== $_POST['password'][1])
  27. return 'Les mot de passe ne correspondent pas';
  28.  
  29. $res = query("SELECT `id` FROM `account` WHERE `username` = '".mysql_real_escape_string($_POST['username'])."'");
  30. if (!$res)
  31. return 'Database: '.mysql_error();
  32.  
  33. if (mysql_num_rows($res) > 0)
  34. return 'Ce nom d utilisateur existe déjà';
  35.  
  36. $res = query("INSERT INTO `account` (`username`,`password`,`email`,`sessionkey`) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['password'][0])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_SESSION['secretkey'])."')");
  37. if (!$res)
  38. return 'Database: '.mysql_error();
  39.  
  40. }
  41.  
  42. function check_mail($email){
  43. if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email))
  44. return TRUE;
  45. else
  46. return FALSE;
  47. }
  48.  
  49. $r = addUser();
  50. if($r === true) {
  51. print '<br><br>Account <strong>'.htmlentities($_POST['username'])."</strong> Compte crée avec succès";
  52. } else {
  53. if($r !== false)
  54. print $r;
  55. ?><style type="text/css">
  56. <!--
  57. body,td,th {
  58. font-family: Verdana, Arial, Helvetica, sans-serif;
  59. font-size: 12px;
  60. color: #FFFFFF;
  61. }
  62. -->
  63. </style>
  64.  
  65. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  66. <table>
  67. <tr>
  68. <th>Nom d'utilisateur:</th>
  69. <td><input type="text" name="username" size="30" maxlength="16" value="<? if(isset($_POST['username'])) print $_POST['username']; ?>"/>
  70. </tr>
  71. <tr>
  72. <th>Mot de passe:</th>
  73. <td><input type="password" name="password[]" size="30" maxlength="16" value="<? if(isset($_POST['password'][0])) print $_POST['password'][0]; ?>"/> </td>
  74. </tr>
  75. <tr>
  76. <th>Le retaper:</th>
  77. <td><input type="password" name="password[]" size="30" maxlength="16" value="<? if(isset($_POST['password'][1])) print $_POST['password'][1]; ?>"/> </td>
  78. </tr>
  79. <tr>
  80. <th>Adresse e-Mail:</th>
  81. <td><input type="text" name="email" size="30" maxlength="27" value="<? if(isset($_POST['email'])) print $_POST['email']; ?>"/></td>
  82. </tr>
  83. <tr>
  84. <th>Code de sécutité:</th>
  85. <td><img src="key.img.php"></td>
  86. </tr>
  87. <tr>
  88. <th>Taper se code:</th>
  89. <td><input type="text" name="securekey" size="5" maxlength="3"/></td>
  90. </tr>
  91.  
  92. <td></td>
  93. <tr>
  94. <td><td colspan="2"><h1><input type="submit" value="S'enregistrer" class="button"/></h1></td></td>
  95. </tr>
  96. </table>
  97. </form>
  98.  
  99.  
  100. <? } ?>
  101. </html>


Ce que j'aimerais faire, c'est que lorsqu'on coche l'une des deux case la valeur dans la nouvelle colonne (nom de la colonne: abc) soit 1 ou 0 (selon la case qu'on coche).

Vu que je m'exprime pas bien, j'ai fait un screenshot de ce que j'aimerais:

Voila j'ai ajouté les deux checkbox: si le 1er est coché la valeur dans la colonne abc sera 0 et si c'est le 2ème est coché la valeur sera 1...

Je n'ai aucune idée de comment faire cela, ce n'est pas moi qui ai fait ce premier script.
Quelqu'un peut-il m'aider?
Merci

(P.S: Les infos concernant la base de donnée ne sont pas sur le ficher php bien sur :p  )

Autres pages sur : php amp sql creation compte ajout champ

2 Mai 2007 01:40:00

Alors, deja si l'utilisateur n'a pas la possibilité de cocher les 2 cases a la fois, utilise une case de type radio, c'est plus simple.
Ca devrait te donner quelque chose comme:
<input type="radio" value="1" name="type" />
<input type="radio" value="2" name="type" />


Et ta requete devient :
$res = query("INSERT INTO `account` (`username`,`password`,`email`,`sessionkey`, `abc`) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['password'][0])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_SESSION['secretkey'])
'".mysql_real_escape_string($_POST['type'])."', ."')" );


J'ai pas testé, mais ca ressemblera a quelque chose comme ca
2 Mai 2007 16:39:48

D'accord avec toi nono, mais il faudrait penser à mettre un htmlentities(); dans les mysql_escape_string();
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