Textarea, php et Mysql

Bonjour,

J'utilise php et j'ai un problème avec une textarea : j'ai un formulaire et lorsque j'e récupère le contenu de chaque champ de saisie (input et textarea pour le stocker dans ma base de données, tout ce passe bien mais lorsque je vais voir sur la base de données, tout a été ajouté sauf le contenu des textareas.
J'aimerais donc connaitre le type de champ à créer sur ma base de données pour stocker le contenu d'un textarea et savoir si la procédure pour récupérer le contenu d'une textarea est la même que pour récuperer le contenu un input.

Merci,
Netsupra

26 réponses

Résumé de la discussion

Problème posé : lors d'un formulaire PHP, le contenu des textareas n'est pas enregistré dans la base de données alors que les inputs fonctionnent, il faut déterminer le type de champ et la procédure. Plusieurs interventions suggèrent de vérifier le balisage HTML, la fermeture des balises textarea et formulaire, puis d'afficher les valeurs de $_POST pour confirmer quelle donnée est transmise. Des essais permettent de tester l'insertion SQL en affichant la requête et les valeurs capturées, pour déterminer si le problème vient du formulaire, du code PHP ou du schéma de la base. En complément, les échanges évoquent des pistes comme vérifier le nommage des champs, l'encodage et tests directs via phpMyAdmin pour s'assurer que les textes sont transmis et stockés.

Bobot (l’IA à votre service)
  1. je cherche un appareil KIRLIAN POUR VOIR L AURA DE LA PERSONNE MERCI D AVANCE
    1. tu t'es un peu planté druides...et je crois que t'as un pb dans ta tête au passage....
    2. Modérateur
      Bonjour,

      Je ne fabrique pas ce genre d'appareil....
  2. voici la fin du bout de code. (Il y a eu un pb de copier coller)

    </textarea><br>\n";
    echo "Accord : <textarea name=\"accord\" value=\"" .
    $row["accord"] . "\"></textarea><br>\n";
    echo "Prix d'achat : <input type=text name=\"prixdachat\" value=\"" .
    $row["prixdachat"] . "\"><br>\n";
    echo "<input type=submit value=\"Modifier\">";
    echo "</form>";
    } else {
    echo "Désolé, mais il y a erreur<br>";
    } mysql_close();
    ?>
    1. bonjour à tous
      J'ai un formulaire qui récupère les données d'une base Mysql afin de les modifier.
      Or j'arrive à récupérer tous les champs input type=text mais pas les champs qui se trouvent en balise textarea.
      C'est ennuyeux

      voici le bout de code. Où est le problème ????

      <? paramètres de connection;
      .....

      $id = $_GET["id"];

      mysql_connect($dbhost,$dblogin,$dbpassword);
      mysql_selectdb($dbname);
      $result=mysql_query("SELECT * FROM VINS WHERE id='$id'");
      if ($row=mysql_fetch_array($result)) {
      echo "<form action=\"maj_bd.php\">\n";
      echo "<input type=hidden name=\"id\" value=$id>\n";
      echo "NOM DU VIN : <input type=text name=\"nom\" size='50' value=\"" .
      $row["nom"] . "\"><br>\n";
      echo "TYPE : <input type=text name=\"type\" size='7' value=\"" .
      $row["type"] . "\"><br><br><br><br>\n";
      echo "MILLESIME : <input type=text name=\"millesime\" size='4' value=\"" .
      $row["millesime"] . "\"><br>\n";
      echo "Nombre de bouteilles : <input type=text name=\"nbbouteilles\" size='3' value=\"" .
      $row["nbbouteilles"] . "\"><br>\n";
      echo "OUVRIR : <input type=text name=\"ouvrir\" size='4' value=\"" .
      $row["ouvrir"] . "\"><br>\n";
      echo "DATE LIMITE : <input type=text name=\"datelimite\" size='4' value=\"" .
      $row["datelimite"] . "\"><br>\n";
      echo "Commentaires : <textarea name=\"commentaires\" value=\"" .
      $row["commentaires"] . "\">
      1. if(isset($_POST['suppr'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
        $id = $_POST['suppr'];
        $delete_user = sprintf("DELETE FROM utilisateurs WHERE id_user='$id'");
        mysql_select_db($base);
        $result = mysql_query($delete_user) or die(mysql_error());
        header("Location:admin.php?delete=ok");
        //il manque un }
        ?>

        je n'ai pas refermé le if
        1. Modérateur
          Je veux bien que tu me dise comment tu as fait parce j'ai rien trouvé de concluant sur cette erreur...

          Et je te conseille d'organiser ton code, sinon pour la maintenance t'as pas fini :-)

          Kilian, débutant en tâche de fond.....
          1. il me fait tujours l'erreur sur la derniere ligne : quand je supprime la ligne 131 il me dit que l'erreur est à la ligne 130, etc...
            1. oui c'est bien ce fichier et j'ai refermé la balise strong et y a toujours le meme probleme
              1. Modérateur
                Bon, déjà ya une balise de trop sur cette ligne. Et tu es sûr que c'est le bon fichier (incl/admin.inc.php)? ça me parait bizzare....

                Kilian, débutant en tâche de fond.....
                1. c'est la derniere du message.
                  C'est justement parcequ'il n'y a rien à cette ligne que je ne comprend pas
                  1. Modérateur
                    Tu es sûr que c'est admin.inc.php ?
                    Parce que ligne 131 je ne vois rien. Cites moi juste la ligne de ce fichier en question...

                    Kilian, débutant en tâche de fond.....
                    1. <? require('lib/mysqlconnect.lib.php');
                      session_start(); // On relaye la session
                      if (session_is_registered("authentification") && $_SESSION['privilege'] == "admin"){ // vérification sur la session authentification (la session est elle enregistrée ?)
                      // ici les éventuelles actions en cas de réussite de la connexion
                      }
                      else {
                      header("Location:index.php?erreur=intru"); // redirection en cas d'echec
                      }
                      // ------ AJOUT D'UN UTILISATEUR --------
                      if(isset($_POST['login'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
                      if(($_POST['login'] == "") || ($_POST['pass'] == "")){ // si login ou mot de passe non spécifiés >> message d'erreur
                      header("Location:admin.php?erreur=empty");
                      }
                      else if($_POST['pass'] == $_POST['pass2']){ // on vérifie si le mot de passe et le mot de passe confirmé ont la même valeur
                      // on passe toutes les variables $POST en variables
                      $login = $_POST['login'];
                      $pass = md5($_POST['pass']); // ici, on crypte le mot de passe à l'aide de MD5 (c'est tout simple non ? :)
                      $nom = $_POST['nom'];
                      $prenom = $_POST['prenom'];
                      $privilege = $_POST['privilege'];
                      // on fait l'INSERT dans la base de données
                      $add_user = sprintf("INSERT INTO utilisateurs (login, pass, nom, prenom, privilege) VALUES ('$login', '$pass', '$nom', '$prenom', '$privilege')");
                      mysql_select_db($base);
                      $result = mysql_query($add_user) or die(mysql_error());
                      header("Location:admin.php?add=ok"); // redirection si création réussie
                      }
                      else{
                      header("Location:admin.php?erreur=pass"); // redirection si le pass1 est différent du pass2
                      }
                      }
                      // requête sur tous les utilisateurs recensés dans la base (on fait un tri par nom)

                      // ------ SUPPRESSION D'UN UTILISATEUR --------
                      // on fait la requête sur tous les utilisateurs de la base
                      mysql_select_db($base);
                      $query_users = "SELECT * FROM utilisateurs ORDER BY nom ASC"; // ORDER BY renvoi les données triées (ici par nom croissant)
                      $users = mysql_query($query_users) or die(mysql_error());
                      $row_users = mysql_fetch_assoc($users);

                      if(isset($_POST['suppr'])){ // on vérifie la présence des variables de formulaire (si le formulaire a été envoyé)
                      $id = $_POST['suppr'];
                      $delete_user = sprintf("DELETE FROM utilisateurs WHERE id_user='$id'");
                      mysql_select_db($base);
                      $result = mysql_query($delete_user) or die(mysql_error());
                      header("Location:admin.php?delete=ok");
                      ?>
                      <form action="" method="post" name="add" class="Style6">
                      <p align="center"><strong>
                      <?
                      if(isset($_GET['erreur']) && ($_GET['erreur'] == "pass")) { // Affiche l'erreur
                      echo ('Veuillez entrer deux fois votre mot de passe SVP');
                      }
                      if(isset($_GET['add']) && ($_GET['add'] == "ok")) { // Affiche l'erreur
                      echo ('Utilisateur créé avec succès');
                      }
                      if(isset($_GET['erreur']) && ($_GET['erreur'] == "empty")) { // Affiche l'erreur
                      echo ('Veuillez renseigner au moins un login et un mot de passe SVP');
                      }
                      ?>
                      </strong></p>
                      <p align="center"><strong><u>Créer un utilisateur</u></strong></p>
                      <table width="304" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#eeeeee">
                      <tr>
                      <td width="140">Login</td>
                      <td width="144"><input name="login" type="text" id="login"></td>
                      </tr>
                      <tr>
                      <td>Mot de passe</td>
                      <td><input name="pass" type="text" id="pass"></td>
                      </tr>
                      <tr>
                      <td>Répéter mot de passe</td>
                      <td><input name="pass2" type="text" id="pass2"></td>
                      </tr>
                      <tr>
                      <td>NOM</td>
                      <td><input name="nom" type="text" id="nom"></td>
                      </tr>
                      <tr>
                      <td>Prénom</td>
                      <td><input name="prenom" type="text" id="prenom"></td>
                      </tr>
                      <tr>
                      <td>Privilège</td>
                      <td><select name="privilege" id="privilege">
                      <option value="user">Utilisateur</option>
                      <option value="admin">Administrateur</option>
                      </select></td>
                      </tr>
                      <tr>
                      <td height="50" colspan="2"><div align="center">
                      <input type="submit" name="Submit" value="Créer cet utilisateur">
                      </div></td>
                      </tr>
                      </table>
                      </form>
                      <p align="center"><strong>
                      <?
                      if(isset($_GET['delete']) && ($_GET['delete'] == "ok")) { // Affiche l'erreur
                      echo ('Utilisateur supprimé avec succès');
                      }
                      ?>
                      </strong> </p>
                      <form action="" method="post" name="suppr" class="Style6">
                      <p align="center"><strong><u>Supprimer un utilisateur</u></strong></p>
                      <div align="center">
                      <table width="417" border="0" cellpadding="5" cellspacing="0">
                      <tr>
                      <td width="240"><div align="center">
                      <select name="suppr" size="5" class="textform" id="select2">
                      <?
                      do {
                      echo ('<option value="'.$row_users['id_user'].'" selected>');
                      if($row_users['privilege']== "admin") echo ">> "; echo $row_users['nom']; echo " "; echo $row_users['prenom']; echo " ("; echo $row_users['login']; echo ")"; if($row_users['privilege']== "admin") echo " <<";
                      echo ('</option>');
                      }
                      while ($row_users = mysql_fetch_assoc($users));
                      $rows = mysql_num_rows($users);
                      if($rows > 0) {
                      mysql_data_seek($users, 0);
                      $row_users = mysql_fetch_assoc($users);
                      }
                      ?>
                      </select>
                      </div></td>
                      <td width="157"><input type="submit" name="Submit2" value="Supprimer cet utilisateur"></td>
                      </tr>
                      </table>
                      </div>
                      </form>
                      <p><a href="../index.php?file=accueil"><strong>< Retour accueil</a></p>
                      1. oui par le formulaire aussi
                        l'autre question c'est ca : j'ai un fichier et lorsque je l'execute ca donne ca :

                        Parse error: parse error, unexpected $ in /var/www/free.fr/d/8/locaima/incl/admin.inc.php on line 131
                        1. Modérateur
                          Eh bien tout est dis, il ya un signe "$" de trop dans la ligne 131 de admin.inc.php. :-)
                          Cites la ligne ici si tu ne vois pas...

                          Kilian, débutant en tâche de fond.....
                      2. Modérateur
                        Ca marche aussi par le formulaire?
                        Euh, dis toujours :-)

                        Kilian, débutant en tâche de fond.....
                        1. est-ce que tu veux bien rpondre à une autre de mes questions (encore un problème).
                          Au fait, merci beaucoup pour l'aide déjà apporté
                          1. Modérateur
                            Essaies cette requete directement sur free.....

                            Kilian, débutant en tâche de fond.....
                            1. INSERT INTO produit(id, reference, categorie, nom, marque, photo, descript_s, descript_l, prixv_ht, prixloc_ht) VALUES('','bjkjhkhjghfgghfg','1','b','Sony','','sdfthyguuyfdsgdjgkh','vfjghtgdghjklghfdfkjl','','')
                              apparement ca marche...
                              donc cela vient de la bdd
                              1. Modérateur
                                Bon. Alors dans cette zone:

                                if (isset($_POST['nom'])) {
                                 $sqlquery = "INSERT INTO produit(id, reference, categorie, nom,           marque, photo, descript_s, descript_l, prixv_ht, prixloc_ht) VALUES('','$reference','$categorie','$nom','$marque','$photo','$description1','$description2','$prixv_ht','$prixloc_ht')";
                                mysql_query($sqlquery) or die('Erreur SQL:'.mysql_error());
                                }


                                Après avoir affecté $sqlquery fais un echo de $sqlquery et mets la partie mysql_query() en commentaire. Quand tu récupères ta requête affichée essaie là dans ta base sur free par phpmyadmin et regardes si tout les champs ont été remplis....

                                Kilian, débutant en tâche de fond.....
                                • 1
                                • 2