Textarea, php et Mysql

Fermé
netupra - 6 nov. 2004 à 13:21
 niko16 - 4 juin 2008 à 10:17
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

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:10
C'est normal que tu n'aies pas fermé ta balise textarea? Ni la balise <form>?

Et pourrais-tu essayer d'envoyer ce formulaire et de vérifier la valeur de $_POST['description1'] avec un echo au début de ton script php?

Kilian, débutant en tâche de fond.....
1
je ne sais pas pourquoi, le copier coller n'a pas bien marché
<?
include("lib/mysqlconnect.lib.php");

if(isset($_POST['reference'])) $reference=$_POST['reference']; else $reference="";
if(isset($_POST['categorie'])) $categorie=$_POST['categorie']; else $categorie="";
if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom="";
if(isset($_POST['marque'])) $marque=$_POST['marque']; else $marque="";
if(isset($_POST['photo'])) $photo=$_POST['photo']; else $photo="";
if(isset($_POST['description1'])) $description1=$_POST['description1']; else $description1="";
if(isset($_POST['description2'])) $description2=$_POST['description2']; else $description2="";
if(isset($_POST['prixv_ht'])) $prixv_ht=$_POST['prixv_ht']; else $prixv_ht="";
if(isset($_POST['prixloc_ht'])) $prixloc_ht=$_POST['prixloc_ht']; else $prixloc_ht="";

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());
}
?>
<form action="" method="post" enctype="multipart/form-data" name="nwprdt" id="nwprdt">
<table width="350" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="40" height="8" rowspan="2" background="../_img/rgbtitle.gif"></td>
<td width="310" height="4" background="../_img/rgbtitle2.gif"></td>
</tr>
<tr>
<td height="16">Ajouter un nouveau produit dans la base de donées </td>
</tr>
</table>
<br>
<table width="591" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="84" align="left" valign="middle">Nom : </td>
<td width="192"><input name="nom" type="text" id="nom" size="32"></td>
<td width="11"></td>
<td width="112">Réference : </td>
<td width="192"><input name="reference" type="text" id="reference" size="32"></td>
</tr>
<tr>
<td align="left" valign="middle">Marque : </td>
<td><select name="marque" id="marque">
<option value="Sony">Sony</option>
<option value="Pioneer">Pioneer</option>
<option value="Panasonic">Panasonic</option>
<option value="JVC">JVC</option>
<option value="Canon">Canon</option>
<option value="Philips">Philips</option>
<option value="Thomson">Thomson</option>
<option value="Fujinon">Fujinon</option>
<option value="LG">LG</option>
<option value="Kenwood">Kenwood</option>
<option value="Samsonit">Samsonit</option>
<option value="Portabrace">Portabrace</option>
</select></td>
<td></td>
<td>Catégorie : </td>
<td><select name="categorie" id="categorie">
<option value="1">Accessoires</option>
<option value="2">Appareil photo</option>
<option value="3">Audio / Micro</option>
<option value="4">Cablage</option>
<option value="5">Caméra / Caméscope</option>
<option value="6">Consommable</option>
<option value="7">Eclairage</option>
<option value="8">Ecran / Televiseur</option>
<option value="9">Home cinema / HI-FI</option>
<option value="10">Informatique</option>
<option value="11">Magnétoscope</option>
<option value="12">Montage</option>
<option value="13">Optique / Filtre</option>
<option value="14">Vidéoprojecteur</option>
</select></td>
</tr>
<tr>
<td align="left" valign="middle">Photo : </td>
<td><input name="photo" type="file" id="photo" size="17"></td>
<td></td>
<td>Location :</td>
<td><input type="radio" name="location" value="1">
Oui
<input type="radio" name="location" value="0">
Non</td>
</tr>
<tr>
<td align="left" valign="middle">Prix HT : </td>
<td><input name="prixv_ht" type="text" id="prixv_ht" size="32"></td>
<td></td>
<td>Location HT : </td>
<td><input name="prixloc_ht" type="text" id="prixloc_ht" size="32"></td>
</tr>
<tr>
<td align="left" valign="middle"><p>Description<br>
courte : </p>
</td>
<td><div align="center">
<textarea name="description1" cols="35" rows="10" id="description1"></textarea>
</div></td>
<td></td>
<td>Description : </td>
<td><div align="center">
<textarea name="description2" cols="35" rows="10" id="description2"></textarea>
</div></td>
</tr>
<tr>
<td colspan="2" align="left" valign="middle">
<div align="right">
<input type="submit" name="Submit" value="Envoyer">
</div></td>
<td align="left" valign="middle"></td>
<td colspan="2" align="left" valign="middle">
<div align="left">
<input type="reset" name="reset" value="Réinitialiser">
</div></td>
</tr>
</table>

</form>
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
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 14:24
Ben ça dépend. Si tu récupères du texte tu crées un champs "text" ou "blob" ou encore VARCHAR. Si tu récupères un nombre que tu veux exploiter en tant que tel tu crées un champs INT ou une de ses variantes... Tout ça c'est pour Sql....


Tu vois ce que je veux dire? Ca dépend du type de ce que tu veux stocker. Bon en l'occurence, pour un <textarea> tu auras généralement besoin d'un champs text dans une base SQL.

Si ça ne marche pas, tu n'as qu'à nous montrer le code source de ton formulaire ainsi que la page php qui prend en charge l'insertion dans la base de données.

Kilian, débutant en tâche de fond.....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Voila le source :
<?
include("lib/mysqlconnect.lib.php");

if(isset($_POST['reference'])) $reference=$_POST['reference']; else $reference="";
if(isset($_POST['categorie'])) $categorie=$_POST['categorie']; else $categorie="";
if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom="";
if(isset($_POST['marque'])) $marque=$_POST['marque']; else $marque="";
if(isset($_POST['photo'])) $photo=$_POST['photo']; else $photo="";
if(isset($_POST['description1'])) $description1=$_POST['description1']; else $description1="";
if(isset($_POST['description2'])) $description2=$_POST['description2']; else $description2="";
if(isset($_POST['prixv_ht'])) $prixv_ht=$_POST['prixv_ht']; else $prixv_ht="";
if(isset($_POST['prixloc_ht'])) $prixloc_ht=$_POST['prixloc_ht']; else $prixloc_ht="";

if (isset($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());
}
?>
<form action="" method="post" enctype="multipart/form-data" name="nwprdt" id="nwprdt">
<table width="350" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="40" height="8" rowspan="2" background="../_img/rgbtitle.gif"></td>
<td width="310" height="4" background="../_img/rgbtitle2.gif"></td>
</tr>
<tr>
<td height="16">Ajouter un nouveau produit dans la base de donées </td>
</tr>
</table>
<br>
<table width="591" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="84" align="left" valign="middle">Nom : </td>
<td width="192"><input name="nom" type="text" id="nom" size="32"></td>
<td width="11"></td>
<td width="112">Réference : </td>
<td width="192"><input name="reference" type="text" id="reference" size="32"></td>
</tr>
<tr>
<td align="left" valign="middle">Marque : </td>
<td><select name="marque" id="marque">
<option value="Sony">Sony</option>
<option value="Pioneer">Pioneer</option>
<option value="Panasonic">Panasonic</option>
<option value="JVC">JVC</option>
<option value="Canon">Canon</option>
<option value="Philips">Philips</option>
<option value="Thomson">Thomson</option>
<option value="Fujinon">Fujinon</option>
<option value="LG">LG</option>
<option value="Senheiser">Senheiser</option>
<option value="AKG">AKG</option>
<option value="Lem">Lem</option>
<option value="Toshiba">Toshiba</option>
<option value="Optoma">Optoma</option>
<option value="Epson">Epson</option>
<option value="HP">HP</option>
<option value="Manfrotto">Manfrotto</option>
<option value="Kata">Kata</option>
<option value="Cartoni">Cartoni</option>
<option value="Kenwood">Kenwood</option>
<option value="Samsonit">Samsonit</option>
<option value="Portabrace">Portabrace</option>
</select></td>
<td></td>
<td>Catégorie : </td>
<td><select name="categorie" id="categorie">
<option value="1">Accessoires</option>
<option value="2">Appareil photo</option>
<option value="3">Audio / Micro</option>
<option value="4">Cablage</option>
<option value="5">Caméra / Caméscope</option>
<option value="6">Consommable</option>
<option value="7">Eclairage</option>
<option value="8">Ecran / Televiseur</option>
<option value="9">Home cinema / HI-FI</option>
<option value="10">Informatique</option>
<option value="11">Magnétoscope</option>
<option value="12">Montage</option>
<option value="13">Optique / Filtre</option>
<option value="14">Vidéoprojecteur</option>
</select></td>
</tr>
<tr>
<td align="left" valign="middle">Photo : </td>
<td><input name="photo" type="file" id="photo" size="17"></td>
<td></td>
<td>Location :</td>
<td><input type="radio" name="location" value="1">
Oui
<input type="radio" name="location" value="0">
Non</td>
</tr>
<tr>
<td align="left" valign="middle">Prix HT : </td>
<td><input name="prixv_ht" type="text" id="prixv_ht" size="32"></td>
<td></td>
<td>Location HT : </td>
<td><input name="prixloc_ht" type="text" id="prixloc_ht" size="32"></td>
</tr>
<tr>
<td align="left" valign="middle"><p>Description<br>
courte : </p>
</td>
<td><div align="center">
<textarea name="description1" cols="35" rows="10" id="description1">
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:19
Ok.

Essaies voir un echo en début de ta page php:
<?php

echo $_POST['description1'] . $_POST['description2'];


Kilian, débutant en tâche de fond.....
0
Non, je ne pense pas que ce soit à cause de ca puisque je recupere normalement mes inputs
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:28
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.....
0
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
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:33
Essaies cette requete directement sur free.....

Kilian, débutant en tâche de fond.....
0
Ca y est ca marche, je ne sais pas pourquoi mais c'est bon
0
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é
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:43
Ca marche aussi par le formulaire?
Euh, dis toujours :-)

Kilian, débutant en tâche de fond.....
0
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
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:48
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.....
0
<? 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>
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:54
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.....
0
c'est la derniere du message.
C'est justement parcequ'il n'y a rien à cette ligne que je ne comprend pas
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 nov. 2004 à 15:59
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.....
0
oui c'est bien ce fichier et j'ai refermé la balise strong et y a toujours le meme probleme
0
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...
0