Partage
  • Partager sur Facebook
  • Partager sur Twitter

checkbox et database

Inserer des choix dans la database

Sujet résolu
    2 décembre 2006 à 22:41:19

    Bonjour tout le monde.
    J'ai cherche partout, dans tous les forums et je ne m'en sors pas.
    En gros, je fais un site de babysitter, ou l'on s'inscrit via un formulaire.
    Dans ce formulaire il y a des chexkbox, mais quand on choisi l'une ou l'autre option, il ecrit dans la database "array", je sais que je dois utiliser la fonction implode, mais quand je la met dans mon code, ca ne marche pas. Voici les parties problematiques de mon code:

     $sql = 'INSERT INTO membre VALUES("", "'.addslashes($_POST['login']).'", "'.md5(addslashes($_POST['pass'])).'" , "'.addslashes($_POST['email']).'" , "'.addslashes($_POST['residence']).'" , "'.addslashes($_POST['phone']).'" ,  "'.addslashes($_POST['hours']).'")';



    et

    I am looking for a :<br />
    <input type="checkbox" name="hours[]"  value="<?php if (isset($_POST['parttime'])) echo stripslashes(htmlentities(trim($_POST['parttime']))); ?>"> Full time nanny<br />
    <input type="checkbox" name="hours[]"  value="<?php if (isset($_POST['fulltime'])) echo stripslashes(htmlentities(trim($_POST['fulltime']))); ?>"> Part time babysitter <br />

    Comment puis-je faire pour que la partie "hours" qui se trouve dans ma base de donnee ecrive "fulltime" ou "parttime".

    D'avance merci



    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2006 à 23:07:53

      Pourquoi tu n'utilise pas un radio, ça me semble plus approprié.

      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2006 à 23:09:05

        Parce qu'ils peuvent choisirent les deux, ET Fulltime ET partime! ou l'un ou l'autre
        • Partager sur Facebook
        • Partager sur Twitter
          2 décembre 2006 à 23:10:43

          Citation : eilotshai

          Bonjour tout le monde.
          J'ai cherche partout, dans tous les forums et je ne m'en sors pas.
          En gros, je fais un site de babysitter, ou l'on s'inscrit via un formulaire.
          Dans ce formulaire il y a des chexkbox, mais quand on choisi l'une ou l'autre option, il ecrit dans la database "array", je sais que je dois utiliser la fonction implode, mais quand je la met dans mon code, ca ne marche pas. Voici les parties problematiques de mon code:


           $sql = 'INSERT INTO membre VALUES("", "'.addslashes($_POST['login']).'", "'.md5(addslashes($_POST['pass'])).'" , "'.addslashes($_POST['email']).'" , "'.addslashes($_POST['residence']).'" , "'.addslashes($_POST['phone']).'" ,  "'.addslashes($_POST['hours']).'")';




          et


          I am looking for a :<br />
          <input type="checkbox" name="hours[]"  value="<?php if (isset($_POST['parttime'])) echo stripslashes(htmlentities(trim($_POST['parttime']))); ?>"> Full time nanny<br />
          <input type="checkbox" name="hours[]"  value="<?php if (isset($_POST['fulltime'])) echo stripslashes(htmlentities(trim($_POST['fulltime']))); ?>"> Part time babysitter <br />


          Comment puis-je faire pour que la partie "hours" qui se trouve dans ma base de donnee ecrive "fulltime" ou "parttime".


          D'avance merci





          Salut,

          Pour commencer préfère mysql_real_escape_string à addslashes, en effet, ce premier est spécialement adapté pour toute insertion dans une base de donnée de type mysql. :)

          ++
          • Partager sur Facebook
          • Partager sur Twitter
            2 décembre 2006 à 23:11:01

            Et dans ta table, tu as aussi 2 champs, ou un champ pour les 2 valeurs ?
            • Partager sur Facebook
            • Partager sur Twitter
              2 décembre 2006 à 23:14:03

              Dans ma table j'ai un champ (hours) ou il m'ecrit ARRAY,
              et quand je mets deux champs (fulltime et partime) il ne m'ecrit rien!!!!
              o_O
              • Partager sur Facebook
              • Partager sur Twitter
                2 décembre 2006 à 23:25:57

                Hum, je te demande si ton champ doit contenir les 2 valeurs ?

                En plus je comprend pas bien ton code, ils sortent d'où les $_POST['parttime'] et $_POST['fulltime'] ?

                Et puis normal qu'il t'écrive array() puisque POST[hour] est un tableau.
                • Partager sur Facebook
                • Partager sur Twitter
                  2 décembre 2006 à 23:31:10

                  Mon champ PEUX contenir les deux valeur, c'est en fonction du choix du visiteur
                  Alors comment je fais pour que mon tableau ecrive le choix du visiteur (fulltime ou partime) au lieux de array?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 décembre 2006 à 23:41:34

                    Un implode comme tu as fait, mais sur quel caractère tu l'as fait ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 décembre 2006 à 23:54:07

                      J'ai utilise implode(', ',$_POST['hours']); au lieu de "'.addslashes($_POST['hours']).'" et la... il ne m'ecrit plus rien dans mon tableau :-(
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 décembre 2006 à 0:35:14

                        $hours = array_map('mysql_real_escape_string', $_POST['hours']);
                        $hours = implode('|', $hours);

                        $sql = 'INSERT INTO membre VALUES("", "'.addslashes($_POST['login']).'", "'.md5(addslashes($_POST['pass'])).'" , "'.addslashes($_POST['email']).'" , "'.addslashes($_POST['residence']).'" , "'.addslashes($_POST['phone']).'" ,  "'. $hours .'")';


                        Devrait fonctionner.

                        Nb: les valeurs MySQL doivent être entre apostrophes et pas entre guillemets.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 décembre 2006 à 0:49:46

                          Non ca ne marche pas, il continue a m'ecrire ARRAY :'(
                          Si tu veux je t'envoi tout mon code:

                          <?php
                          //
                          $check="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
                          // on teste si le visiteur a soumis le formulaire

                           
                          if (isset($_POST['inscription']) && $_POST['inscription'] == 'Register!') {
                              // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
                              if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['residence']) && !empty($_POST['residence'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
                                  // on teste les deux mots de passe
                                  if ($_POST['pass'] != $_POST['pass_confirm']) {
                                      $error = 'Your password doesn\'t match!';
                                  }
                                          elseif (!preg_match($check,$_POST['
                          email']))  {
                                              $error = '
                          Your email is not valid';
                                          }
                                  else {
                                      $base = mysql_connect ('
                          localhost', 'root', '');
                                      mysql_select_db ('
                          coursphp', $base);
                                     
                                      // on recherche si ce login est déjà utilisé par un autre membre
                                      $sql = '
                          SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'"';
                                      $req = mysql_query($sql) or die('
                          Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                                      $data = mysql_fetch_array($req);

                                      if ($data[0] == 0) {
                                                  $hours = array_map('
                          mysql_real_escape_string', $_POST['hours']);
                                      $hours = implode('
                          |', $hours);

                                          $sql = '
                          INSERT INTO membre VALUES("", "'.addslashes($_POST['login']).'", "'.md5(addslashes($_POST['pass'])).'" , "'.addslashes($_POST['email']).'" , "'.addslashes($_POST['residence']).'" , "'.addslashes($_POST['phone']).'""'.addslashes($_POST['hours']).'")';
                                          mysql_query($sql) or die('
                          Erreur SQL !'.$sql.'<br />'.mysql_error());

                                          session_start();
                                          $_SESSION['
                          login'] = $_POST['login'];
                                          header('
                          Location: membre.php');
                                          exit();
                                      }
                                      else {
                                          $error = '
                          Sorry, that login already exist!';
                                      }
                                  }
                              }
                              else {
                                  $error = '
                          Please fill all the mandatory fields, Thank you';
                              }
                          }
                          ?>
                          <html>
                          <head>
                          <title>Registration</title>
                          </head>

                          <body >
                          <h1> Register </h1> <br />
                          <form action="inscription.php" method="post">
                          Login :<br /> <input type="text" name="login" value="<?php if (isset($_POST['
                          login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>"><br />
                          Email :<br /> <input type="text" name="email" value="<?php if (isset($_POST['
                          email'])) echo stripslashes(htmlentities(trim($_POST['email']))); ?>"><br />
                          Residence (city/neighborhood):<br /> <input type="text" name="residence" value="<?php if (isset($_POST['
                          residence'])) echo stripslashes(htmlentities(trim($_POST['residence']))); ?>"><br />
                          Phone Number (optional):<br /> <input type="text" name="phone" value="<?php if (isset($_POST['
                          phone'])) echo stripslashes(htmlentities(trim($_POST['phone']))); ?>"><br />
                          I am looking for a :<br />
                          <input type="checkbox" name="hours[]"  value="<?php if (isset($_POST['
                          parttime'])) echo stripslashes(htmlentities(trim($_POST['parttime']))); ?>"> Full time nanny<br />
                          <input type="checkbox" name="hours[]"  value="<?php if (isset($_POST['
                          fulltime'])) echo stripslashes(htmlentities(trim($_POST['fulltime']))); ?>"> Part time babysitter <br />
                          Password :<br /> <input type="password" name="pass" value="<?php if (isset($_POST['
                          pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>"><br />
                          Confirm your password :<br /> <input type="password" name="pass_confirm" value="<?php if (isset($_POST['
                          pass_confirm'])) echo stripslashes(htmlentities(trim($_POST['pass_confirm']))); ?>"><br />
                          <input type="submit" name="inscription" value="Register!">
                          </form>
                          <?php
                          if (isset($error)) echo '
                          <br />',$error;
                          ?>
                          </body>
                          </html>
                           
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 décembre 2006 à 11:24:46

                            Euh là tu as mis $_POST[hours] dans ta requête et pas $hours.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 décembre 2006 à 11:35:26

                              j'ai change en "'.$hours.'" et il ne m'ecrit plus rien du tout. meme pas ARRAY
                              Pourrais-tu juste me donner un bete exemple, comment utiliser un checkbox et ou un utilisateur a le choix entre plusieurs options, et comment rentrer ses options dans la base SQL sans qu'il ecrive ARRAY, mais qu'il ecrive option1 ou option1 et deux?
                              Merci
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 décembre 2006 à 11:59:51

                                Bon ton erreur vient sans doute du fait de

                                Citation

                                En plus je comprend pas bien ton code, ils sortent d'où les $_POST['parttime'] et $_POST['fulltime'] ?



                                Code revu :
                                <?php
                                //
                                $check="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
                                // on teste si le visiteur a soumis le formulaire

                                 
                                if (isset($_POST['inscription']) && $_POST['inscription'] == 'Register!')
                                {
                                                $_POST = array_map('trim', $_POST);
                                    // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
                                    if( !empty($_POST['login']) && !empty($_POST['email']) && !empty($_POST['residence']) && !empty($_POST['pass']) && !empty($_POST['pass_confirm']) )
                                                {
                                        // on teste les deux mots de passe
                                        if ($_POST['pass'] != $_POST['pass_confirm'])
                                            $error = 'Your password doesn\'t match!';
                                        elseif (!preg_match($check,$_POST['
                                email']) )
                                            $error = '
                                Your email is not valid';
                                        else
                                                                {
                                            $base = mysql_connect ('
                                localhost', 'root', '');
                                            mysql_select_db('
                                coursphp', $base);
                                           
                                            // on recherche si ce login est déjà utilisé par un autre membre
                                            $sql = "SELECT count(*) FROM membre WHERE login='
                                " . mysql_real_escape_string($_POST['login']) . "'";
                                            $req = mysql_query($sql) or die('
                                Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                                            $data = mysq_result($req, 0);

                                            if ($data == 0)
                                                                                {
                                                $hours = array_map('
                                mysql_real_escape_string', $_POST['hours']);
                                                    $hours = implode('
                                |', $hours);

                                                $sql = "INSERT INTO membre VALUES('
                                ', '" . mysql_real_escape_string($_POST['login']) . "',
                                                                                                '
                                " . md5($_POST['pass']) . "',
                                                                                                '
                                " . mysql_real_escape_string($_POST['email']) . "',
                                                                                                '
                                " . mysql_real_escape_string($_POST['residence']) . "',
                                                                                                '
                                " . mysql_real_escape_string($_POST['phone']). "', 
                                                                                                '
                                " . $hours . "')";
                                                                                               
                                                mysql_query($sql) or die('
                                Erreur SQL !'.$sql.'<br />'.mysql_error());

                                                session_start();
                                               
                                                $_SESSION['
                                login'] = $_POST['login'];
                                                header('
                                Location: membre.php');
                                                exit();
                                            }
                                            else {
                                                $error = '
                                Sorry, that login already exist!';
                                            }
                                        }
                                    }
                                    else {
                                        $error = '
                                Please fill all the mandatory fields, Thank you';
                                    }
                                }
                                ?>
                                <html>
                                <head>
                                <title>Registration</title>
                                </head>

                                <body >
                                <h1> Register </h1> <br />
                                <form action="inscription.php" method="post">
                                Login :<br /> <input type="text" name="login" value="<?php if (isset($_POST['
                                login'])) echo htmlspecialchars($_POST['login']); ?>"><br />
                                Email :<br /> <input type="text" name="email" value="<?php if (isset($_POST['
                                email'])) echo htmlspecialchars($_POST['email']); ?>"><br />
                                Residence (city/neighborhood):<br /> <input type="text" name="residence" value="<?php if (isset($_POST['
                                residence'])) echo htmlspecialchars($_POST['residence']); ?>"><br />
                                Phone Number (optional):<br /> <input type="text" name="phone" value="<?php if (isset($_POST['
                                phone'])) echo htmlspecialchars($_POST['phone']); ?>"><br />
                                I am looking for a :<br />
                                <input type="checkbox" name="hours[]"  value="parttime" <?php if( isset($_POST['
                                hours']) && in_array('parttime', $_POST['hours']) ) echo 'checked="checked"'; ?>> Full time nanny<br />
                                <input type="checkbox" name="hours[]"  value="fulltime"  <?php if( isset($_POST['
                                hours']) && in_array('fulltime', $_POST['hours']) ) echo 'checked="checked"'; ?>> Part time babysitter <br />
                                Password :<br /> <input type="password" name="pass" value="<?php if (isset($_POST['
                                pass'])) echo htmlspecialchars($_POST['pass']); ?>"><br />
                                Confirm your password :<br /> <input type="password" name="pass_confirm" value="<?php if (isset($_POST['
                                pass_confirm'])) echo htmlspecialchars($_POST['pass_confirm']); ?>"><br />
                                <input type="submit" name="inscription" value="Register!">
                                </form>
                                <?php
                                if (isset($error)) echo '
                                <br />',$error;
                                ?>
                                </body>
                                </html>
                                • Partager sur Facebook
                                • Partager sur Twitter

                                checkbox et database

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown