Les Allergies
Alimentaires
Posez votre question Signaler

Textarea, php et Mysql

netupra - Dernière réponse le 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
Lire la suite 

Textarea, php et Mysql »

Suggestions
30 réponses
Réponse
+1
moins plus
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.....
Ajouter un commentaire
Réponse
+1
moins plus
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>
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.....
Ajouter un commentaire
Réponse
+0
moins plus
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">
Ajouter un commentaire
Réponse
+0
moins plus
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.....
Ajouter un commentaire
Réponse
+0
moins plus
Non, je ne pense pas que ce soit à cause de ca puisque je recupere normalement mes inputs
Ajouter un commentaire
Réponse
+0
moins plus
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.....
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Essaies cette requete directement sur free.....

Kilian, débutant en tâche de fond.....
Ajouter un commentaire
Réponse
+0
moins plus
Ca y est ca marche, je ne sais pas pourquoi mais c'est bon
Ajouter un commentaire
Réponse
+0
moins plus
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é
Ajouter un commentaire
Réponse
+0
moins plus
Ca marche aussi par le formulaire?
Euh, dis toujours :-)

Kilian, débutant en tâche de fond.....
Ajouter un commentaire
Réponse
+0
moins plus
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
kilian- 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.....
Ajouter un commentaire
Réponse
+0
moins plus
<? 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>
Ajouter un commentaire
Réponse
+0
moins plus
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.....
Ajouter un commentaire
Réponse
+0
moins plus
c'est la derniere du message.
C'est justement parcequ'il n'y a rien à cette ligne que je ne comprend pas
Ajouter un commentaire
Réponse
+0
moins plus
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.....
Ajouter un commentaire
Réponse
+0
moins plus
oui c'est bien ce fichier et j'ai refermé la balise strong et y a toujours le meme probleme
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Ce document intitulé « Textarea, php et Mysql » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Textarea, php et Mysql - page 2