Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
874 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème formulaire avec textarea

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème formulaire avec textarea

n°976703
kerrighan
Carpe diem, seize the day...
Posté le 09-02-2005 à 16:20:46  profilanswer
 

Bonjour,  :hello:  
 
J'ai une Bd sur Postgres, en Latin3.
 
Ma table est celle ci:
 
CREATE TABLE techreport
(
  no_techreport int4 NOT NULL DEFAULT nextval('seq_techreport'::text),
  titre_techreport varchar(50) NOT NULL,
  date date,
  summary_techreport varchar(300) NOT NULL,
  content_techreport varchar NOT NULL,
  CONSTRAINT pk_no_techreport PRIMARY KEY (no_techreport)
)

 
Et dans mon formulaire, j'ai deux textarea qui doivent écrire dans:
summary_techreport
et
content_techreport
 
Le problème est que lorsque je met quelque chose comme 200 mots, cela n'écrit pas dans la bd!
Est-ce du au fait que je n'ai pas précisé de valeur pour les varchar de content_techreport?
Ou est-ce du aux textareas?


Message édité par kerrighan le 09-02-2005 à 17:01:55
mood
Publicité
Posté le 09-02-2005 à 16:20:46  profilanswer
 

n°976709
Xav_
The only one...
Posté le 09-02-2005 à 16:22:37  profilanswer
 

sous MySQL, tu a un format "text" qui est plutot pas mal quand tu veux stocker du texte... ça existe pas l'équivalent sous postgres ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°976719
kerrighan
Carpe diem, seize the day...
Posté le 09-02-2005 à 16:29:30  profilanswer
 

Xav_ a écrit :

sous MySQL, tu a un format "text" qui est plutot pas mal quand tu veux stocker du texte... ça existe pas l'équivalent sous postgres ???


ah je ne sais pas, je vais jeter un oeil ;)

n°976725
kerrighan
Carpe diem, seize the day...
Posté le 09-02-2005 à 16:41:33  profilanswer
 

Bon apparement cela existe :D je vais tester ;)

n°976751
kerrighan
Carpe diem, seize the day...
Posté le 09-02-2005 à 17:01:12  profilanswer
 

Bon et bien cela ne fonctionne toujours pas...lorsque je met un texte du style:
 
'Les systèmes d'exploitation Microsoft® Windows® 2000 Advanced Server et Datacenter Server permettent aux organisations de déployer des solutions de commerce électronique et des applications professionnelles critiques sur du matériel PC standard. Pour y parvenir, les technologies d'organisation en clusters sont essentielles.'
 
Les données ne s'écrivent pas dans la BD :/ Ah je précise que je suis en method="post", je ne sais pas si cela joue...

n°976766
Fred999
Rabat-joie
Posté le 09-02-2005 à 17:12:04  profilanswer
 

...fais voir ton code, là il y a un souci.

n°976785
kerrighan
Carpe diem, seize the day...
Posté le 09-02-2005 à 17:22:35  profilanswer
 

Fred999 a écrit :

...fais voir ton code, là il y a un souci.


Ok mais c'est pas du beau, je te préviens! Je débute :D
 
En abrégé, le formulaire:
 
<form method="post" name="Techreport" action="Pages/admin/valid_aj_techreport.php" OnSubmit='return validate()'>
<table border="1" bordercolor="navy">
<tr>
 <td width="200"><b>Titre:</b></td>
 <td><input type="text" name="titre" size="50"></td>
</tr>
<tr>
        <td width="200"><b>Extrait:</b>
 <textarea name="summary" rows=8 cols=25></textarea></td>
</tr>
<tr>
 <td width="200" height="20"><b>Contenu:</b>
 <textarea name="content" rows=8 cols=50></textarea></td>
</tr>
 
</table>
<input type="submit" value="Envoyer"></form>

 
La page de traitement (tres abrégée):
 
<?php
$titre = $_POST['titre'];
$summary = $_POST['summary'];
$content = $_POST['content'];
 
$maj = pg_query($pgconnection, "INSERT INTO techreport (titre_techreport,date,summary_techreport,content_techreport)  
 VALUES ('$titre','$date','$summary','$content')" );
?>

n°976825
Fred999
Rabat-joie
Posté le 09-02-2005 à 17:52:01  profilanswer
 

Perso pour récupérer les variables d'un formulaire j'utilise
 
$summary = $HTTP_POST_VARS['summary'];
 
Je pense que le souci est qu'il s'embrouille avec les apostrophes.
 
Pour cela, un $summary = addslashes($HTTP_POST_VARS['summary']);
 
devrait résoudre pas mal de problèmes.
 
Utilise stripslashes() à l'affichage ensuite.
 
Ta future bible : http://www.php.net/manual/fr/index.php
 
++ :=

n°976842
FlorentG
Unité de Masse
Posté le 09-02-2005 à 18:10:52  profilanswer
 

Fred999 a écrit :

Perso pour récupérer les variables d'un formulaire j'utilise
 
$summary = $HTTP_POST_VARS['summary'];
 
Je pense que le souci est qu'il s'embrouille avec les apostrophes.
 
Pour cela, un $summary = addslashes($HTTP_POST_VARS['summary']);
 
devrait résoudre pas mal de problèmes.
 
Utilise stripslashes() à l'affichage ensuite.
 
Ta future bible : http://www.php.net/manual/fr/index.php
 
++ :=


Pas besoin du $HTTP_POST_VARS, on peut utiliser le $_POST['champ']. Après, il suffit de mettre le addslashes, donc :

$content = addslashes($_POST['content']);


n°976852
Fred999
Rabat-joie
Posté le 09-02-2005 à 18:15:36  profilanswer
 

OK, je ne savais pas :jap:
 
Quelle est la différence entre les deux ?

mood
Publicité
Posté le 09-02-2005 à 18:15:36  profilanswer
 

n°976974
Xav_
The only one...
Posté le 09-02-2005 à 19:56:20  profilanswer
 

Fred999 a écrit :

OK, je ne savais pas :jap:
 
Quelle est la différence entre les deux ?


ta syntaxe était la seule possible jusqu'à PHP4 si mes souvenirs sont bon, maintenant le $_POST est implémenté est simplifie mais la "vieille" syntaxe est fort heureusement tjs valable (compatibilité obligée)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°977020
kalex
Posté le 09-02-2005 à 21:16:08  profilanswer
 

Ca me paraîtrai surprenant, mais vérifie quand même ta conf php, par exemple les directives post_max_size et memory_limit.

n°977289
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 09:49:46  profilanswer
 

Salut,
J'ai donc utilisé:

$content = addslashes($_POST['content']);


Et cela fonctionne, merci :jap:
Par contre, je n'ai plus la mise en forme du texte à l'affichage...
Pour le conserver; hier soir, j'ai ajouté nl2br comme ceci

$content = nl2br($_POST['content']);


Mais du coup ca n'a plus lieu d'etre!


Message édité par kerrighan le 10-02-2005 à 09:51:03
n°977293
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 09:52:18  profilanswer
 

kalex a écrit :

Ca me paraîtrai surprenant, mais vérifie quand même ta conf php, par exemple les directives post_max_size et memory_limit.


Comment fait on pour voir ca

n°977309
FlorentG
Unité de Masse
Posté le 10-02-2005 à 10:00:02  profilanswer
 

kerrighan a écrit :

Salut,
J'ai donc utilisé:

$content = addslashes($_POST['content']);


Et cela fonctionne, merci :jap:
Par contre, je n'ai plus la mise en forme du texte à l'affichage...
Pour le conserver; hier soir, j'ai ajouté nl2br comme ceci

$content = nl2br($_POST['content']);


Mais du coup ca n'a plus lieu d'etre!


C'est normal, n'oublie pas qu'en html, les retours chariots ne sont pas pris en compte (hormis dans les bloc <pre> et <code> ), et qu'il faut metter un <br/> pour les forcer..

n°977315
ratibus
Posté le 10-02-2005 à 10:03:33  profilanswer
 

Fred999 a écrit :

Perso pour récupérer les variables d'un formulaire j'utilise
 
$summary = $HTTP_POST_VARS['summary'];
 
Je pense que le souci est qu'il s'embrouille avec les apostrophes.
 
Pour cela, un $summary = addslashes($HTTP_POST_VARS['summary']);
 
devrait résoudre pas mal de problèmes.
 
Utilise stripslashes() à l'affichage ensuite.
 
Ta future bible : http://www.php.net/manual/fr/index.php
 
++ :=


 
 
L'avantage de $_POST sur $HTTP_POST_VARS c'est que $_POST est un tableau superglobal : si tu veux l'utiliser dans une fonction pas besoin d'ajouter global $_POST, alors que t'es obligé de mettre un global $HTTP_POST_VARS.
 
Par contre encore une fois, le stripslashes() est inutile (sauf si magic_quotes_runtime est à On mais c'est rare), je te laisse tester par toi-même.

n°977318
Fred999
Rabat-joie
Posté le 10-02-2005 à 10:05:39  profilanswer
 

Merci des conseils [:bien]

n°977320
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 10:09:43  profilanswer
 

FlorentG a écrit :

C'est normal, n'oublie pas qu'en html, les retours chariots ne sont pas pris en compte (hormis dans les bloc <pre> et <code> ), et qu'il faut metter un <br/> pour les forcer..


Ok mais je ne vais pas demander aux utilisateurs de mettre des <br/> lorsqu'ils saisissent le texte :/

n°977321
FlorentG
Unité de Masse
Posté le 10-02-2005 à 10:10:04  profilanswer
 

kerrighan a écrit :

Ok mais je ne vais pas demander aux utilisateurs de mettre des <br/> lorsqu'ils saisissent le texte :/


D'où l'interête de la fonction nl2br ;)

n°977444
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 11:27:03  profilanswer
 

Ok mais je peut mettre nl2br et addslashes en même temps?

n°977448
Fred999
Rabat-joie
Posté le 10-02-2005 à 11:28:05  profilanswer
 

Tu fais ce que tu veux, tu peux enchaîner sur un trim() ou un substr() si ça te chante.
 
Aucun souci d'imbrication dans les appels de fonctions, tant que les types correspondent bien.

n°977455
FlorentG
Unité de Masse
Posté le 10-02-2005 à 11:30:10  profilanswer
 

kerrighan a écrit :

Ok mais je peut mettre nl2br et addslashes en même temps?


Attention à ne pas faire un nl2br lors de l'insertion dans la base, parce que s'il faut éditer, t'aura pleins de <br/> partout. Aussi si un jour tes données doivent être affichées ailleurs que dans un document XHTML, tu sera emmerdé par les <br/> :)

n°977462
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 11:33:06  profilanswer
 

Fred999 a écrit :

Tu fais ce que tu veux, tu peux enchaîner sur un trim() ou un substr() si ça te chante.
 
Aucun souci d'imbrication dans les appels de fonctions, tant que les types correspondent bien.


Oki ;)

n°977471
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 11:36:16  profilanswer
 

FlorentG a écrit :

Attention à ne pas faire un nl2br lors de l'insertion dans la base, parce que s'il faut éditer, t'aura pleins de <br/> partout. Aussi si un jour tes données doivent être affichées ailleurs que dans un document XHTML, tu sera emmerdé par les <br/> :)


Bon actuellement j'insert dans la base avec:
 

$content = addslashes($_POST['content']);


 
Comment faire pour afficher mes données mises en forme? car la le texte est entré dans la bd en ligne...,c'est à dire sans retour chariot!
 

n°977480
FlorentG
Unité de Masse
Posté le 10-02-2005 à 11:39:22  profilanswer
 

Ben sii, il y a des retours chariots :heink: Faut juste les convertir en <br/> lors de l'affichage sur un document XHTML

n°977485
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 11:41:20  profilanswer
 

Bon maintenant j'ai mis:

$content = nl2br(addslashes($_POST['content']));


Et j'ai bien les <br\> donc un affichage avec la mise en forme :)

n°977492
FlorentG
Unité de Masse
Posté le 10-02-2005 à 11:46:13  profilanswer
 

kerrighan a écrit :

Bon maintenant j'ai mis:

$content = nl2br(addslashes($_POST['content']));


Et j'ai bien les <br\> donc un affichage avec la mise en forme :)


Le $content, c'est ce que tu stockes dans la BD ?

n°977565
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 12:50:38  profilanswer
 

et bien oui :/

n°977590
FlorentG
Unité de Masse
Posté le 10-02-2005 à 13:35:34  profilanswer
 

Justement c'est ce qu'il ne faut pas faire. Faut mettre le nl2br juste au moment de l'affichage dans le document XHTML

n°977591
Xav_
The only one...
Posté le 10-02-2005 à 13:35:51  profilanswer
 

si je ne m'abuse, le nl2br faut pas le faire au stockage, mais plutot à l'affichage... enfin je crois
 
EDIT: grilled, j'ai pa bu mon café donc pas assez rapide


Message édité par Xav_ le 10-02-2005 à 13:36:27

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°977615
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 13:56:38  profilanswer
 

Ok donc je met:
 

$content = addslashes($_POST['content']);


 
Pour écrire dans la BD
et
 

$content = nl2br(['content']);


 
Pour afficher les données c'est bien ca?
En tout cas ca a l'air de fonctionner :D

n°977621
FlorentG
Unité de Masse
Posté le 10-02-2005 à 13:59:56  profilanswer
 

Voilà, comme ça t'as pas les <br/> codés en durs dans la base :)

n°977753
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 15:51:43  profilanswer
 

FlorentG a écrit :

Voilà, comme ça t'as pas les <br/> codés en durs dans la base :)


Yess, en tout cas merci beaucoup à vous tous, ca m'a tiré une épine du pied :)
(J'adore ce Forum, il y as toujours quelqu'un pour t'aider  [:kerrighan] )

n°977754
FlorentG
Unité de Masse
Posté le 10-02-2005 à 15:52:25  profilanswer
 

:jap: :)

n°977883
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 18:00:58  profilanswer
 

Euh j'ai une petite dernière question :whistle:
Voila lors de la supression de mes entrées dans la Bd,l'utilisateur clique sur un lien (supprimer entrée)qui ouvre une popup.
Dans cette popup, s'affichent quelques données de l'uplet et en dessous, figure un bouton pour valider la suppression.
 
Le code du bouton est fait ainsi:
 

echo"<form method='post'>";
echo"<input type='hidden' value='$id_doc' name='id'>";
echo"<input type='submit' value='OUI'>&nbsp;<input type='button' onclick='window.close();' value='NON'></form>";


 
Le champ id me permet de connaitre l'id de l'uplet pour pouvoi le supprimer.
Le problème est que lorsque je clique sur le bouton 'OUI' rien ne ce passe. Par contre, si j'ajoute un champ du type:

<input type='text' name='titre' value='$titre'>


la sa passe.
Le problème, c'est que je n'ai pas envie d'avoir de champ éditable dans cette popup de confirmation!
Comment dois je m'y prendre? Vous avez une idée?


Message édité par kerrighan le 10-02-2005 à 18:02:05
n°977930
Fred999
Rabat-joie
Posté le 10-02-2005 à 19:14:28  profilanswer
 

Il n'y a pas d'action dans ton formulaire ? :??:

n°977945
kerrighan
Carpe diem, seize the day...
Posté le 10-02-2005 à 19:57:06  profilanswer
 

Bah non, comme ca il est traité directement :)

n°978293
kerrighan
Carpe diem, seize the day...
Posté le 11-02-2005 à 09:57:13  profilanswer
 

Ok j'ai trouvé ma boulette :D, je m'était trompé dans mon isset ;)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème formulaire avec textarea

 

Sujets relatifs
Problème de connexion Mysql 4.1x PHP 4Probleme perte de variable en sortie de boucle
probleme de test sur une valeur sortie d'une requete SQLProbleme de Thread... :(
problème avec des sessions....[Java MySQL] Problème de Savepoints !
[JS] Problème de Scriptprobleme avec l'api c Mysql
MAJ comobo box dans un formulaire AccessProblème d'insertion de données
Plus de sujets relatifs à : Problème formulaire avec textarea


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR