Enregistrer des données dans une table

Bonjour , j'ai crée un formulaire html ( form action...) à partir duquel je rentre des données . J'aimerais enregistrer ces données dans une base de données mysql et ma question est la suivante : pour foutre ces données dans la base de données , je dois lire les données dans la base ou les écrire dans la base ? Je crois pas que je dois les lire dans la base vu qu'elles n'y sont pas encore , je dois les écrire dans la base c'est çà ? Donc est possible d'écrire des données dans la base à partir du formulaire ?

Je souhaite une réponse littérale svp , surtout pas de code , merci .
Configuration: Windows XP
Firefox 2.0.0.6

12 réponses

  1. Contributeur
    Salut

    Oui, il faut que tu écrive tes données dans la base. Pour ce faire, tu peux utiliser le PHP pour récupérer les valeurs de ton formulaire, et ensuite tu écrit tes valeurs dans la base de données :)

    A++

    PS : j'ai eu du mal, mais j'ai résisté à l'envie de mettre du code en exemple lol
    0
    1. alors ok donc dans mon formulaire j'ai 2 champ à remplir , pseudo et message , et voici le code php que je propose pour écrire dans la base de données les données que j'entrerai dans mon formulaire :

      mysql_connect("localhost", "root", "");
      mysql_select_db("test");
      INSERT INTO chat(ID, pseudo, message)
      VALUES('',$_POST['pseudo'],$_POST['message'])

      PS : voici le code du formulaire si çà peut aider :

      <form action="chat.php" method="post">
      <p> Pseudo : <input type="text" name="pseudo"> </p>
      <p> Message : <input type="text" name="message"> </p>
      <input type="submit" value="send">
      </form>

      ma question est : ici est ce que dans VALUES quand je mets $_POST...çà me mettra ce que contient le formulaire dans la table ?
      0
      1. Contributeur
        2 problèmes

        Un accès root sans mot de passe sur la base... mais bon si c'est pour les test, rien de méchant

        par contre, les $_POST je les mettrai d'abord dans une variable, pour éviter les problèmes avec les ' :)

        sinon, c'est bon :)
        0
        1. pardon , je corrige mon code :

          mysql_connect("localhost", "root", "");
          mysql_select_db("test");
          mysql_query("INSERT INTO chat VALUES('',$_POST['pseudo'],$_POST['message'])");

          c'est pas mieux ainsi ? :)

          le code entier c'est ça :

          <form action="chat.php" method="post">
          <p> Pseudo : <input type="text" name="pseudo"> </p>
          <p> Message : <input type="text" name="message"> </p>
          <input type="submit" value="send">
          </form>

          <?php

          $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
          $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));

          if(isset($_POST['pseudo']) && isset($_POST['message']))
          {
          if($_POST['pseudo'] != NULL $$ $_POST['message'] != NULL)
          {
          mysql_connect("localhost", "root", "");
          mysql_select_db("test");
          mysql_query("INSERT INTO chat VALUES('',$_POST['pseudo'],$_POST['message'])");

          çà écrit bien les données du formulaire dans la table ?
          0
          1. Contributeur
            Oui. Pour en etre sur tu peux faire :
            if (mysql_query("INSERT INTO chat VALUES('',$_POST['pseudo'],$_POST['message'])"))
            echo "données enregistrées"
            else
            echo "erreur".mysql_error();

            :)
            0
            1. ok , et maintenant je veux afficher les 10 1eres entrées de ma table et voici le code que je propose :

              <?php

              $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
              $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));

              if(isset($_POST['pseudo']) && isset($_POST['message']))
              {
              if($_POST['pseudo'] != NULL $$ $_POST['message'] != NULL)
              {
              mysql_connect("localhost", "root", "");
              mysql_select_db("test");
              mysql_query("INSERT INTO chat VALUES('',$_POST['pseudo'],$_POST['message'])");
              mysql_close();
              }
              }

              $reponse = mysql_query("SELECT * FROM chat LIMIT 0, 9");

              while($donnees = mysql_fetch_array($reponse))
              {
              echo $donnees;
              }

              mais j'ai une erreur sur cette ligne quand je veux lire la page : if($_POST['pseudo'] != NULL $$ $_POST['message'] != NULL)
              0
              1. j'ai réussi à corriger cette erreur mais j'en ai une autre plus complexe à cette ligne :

                mysql_query("INSERT INTO chat VALUES(' ',$_POST['pseudo'],$_POST['message'])");

                Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

                concrètement çà veut dire quoi?
                0
                1. quelqu'un peut me dire où est le problème dans cette ligne svp ?
                  0
                  1. Contributeur
                    Salut

                    Essaye d'enregistrer tes $_POST dans des variables avant
                    $pseudo = $_POST['pseudo'];
                    ...

                    Ca évite d'avoir trop de ' dans la requète :)

                    A++
                    0
                    1. alors voici le code complet html et php pour réaliser un mini chat qui à partir d'un formulaire nous envoit les 10 1eres messages ( avec pseudos ) :

                      <form action="chat.php" method="post">
                      <p> Pseudo : <input type="text" name="pseudo"> </p>
                      <p> Message : <input type="text" name="message"> </p>
                      <input type="submit" value="send">
                      </form>

                      <?php

                      $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
                      $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));

                      if(isset($_POST['pseudo']) && isset($_POST['message']))
                      {
                      if($_POST['pseudo'] != NULL && $_POST['message'] != NULL)
                      {
                      mysql_connect("localhost", "root", "");
                      mysql_select_db("test");
                      mysql_query("INSERT INTO chat VALUES('',$pseudo,$message)");
                      mysql_close();
                      }
                      }

                      $reponse = mysql_query("SELECT * FROM chat LIMIT 0, 9");

                      while($donnees = mysql_fetch_array($reponse))
                      {
                      echo $donnees;
                      }

                      ?>

                      et quand j'essaye de lire la page j'ai bien le formulaire mais aussi des messages d'erreurs qui sont pas trop normaux je trouve :

                      Notice: Undefined index: pseudo on line 17

                      Warning: mysql_real_escape_string(): Acc�s refus� pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) on line 17

                      Warning: mysql_real_escape_string(): A link to the server could not be established

                      Notice: Undefined index: message on line 18

                      Warning: mysql_real_escape_string(): Acc�s refus� pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) on line 18

                      Warning: mysql_real_escape_string(): A link to the server could not be established

                      Warning: mysql_query(): Acc�s refus� pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) line 31

                      Warning: mysql_query(): A link to the server could not be established on line 31

                      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource on line 33

                      t'es bien d'accord que j'entre les données dans la base et que ensuite je les lis correctement en les affichant ?
                      0
                      1. Contributeur
                        Bonjour :)

                        Plusieurs choses :

                        <?php

                        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
                        $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));

                        Il faut que tu utilise
                        $pseudo = addslashes($_POST['pseudo']); // Ca te permet d'ajouter les \ devant les caractères spéciaux.
                        donc meme chose pour message.

                        Warning: mysql_query(): Acc�s refus� pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) line 31

                        Ta connexion au serveur mysql ne fonctionne pas...

                        A+
                        0