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

  FORUM HardWare.fr
  Programmation
  PHP

  Je n'arrive pas à récupérer le textarea

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Je n'arrive pas à récupérer le textarea

n°1780570
jpass2
Posté le 31-08-2008 à 18:20:49  profilanswer
 

BOnjour !
 
Voilà, j'ai fais un formulaire qui comporte un textarea et j'aimerais renvoyer son contenu par mail.
 
Voilà le code :
 
index.php :

Code :
  1. <form method=POST action=mail.php >
  2. Votre message : <textarea COLS=50 ROWS=6 name=message></textarea>
  3. <input type=submit value=Envoyer>
  4. </form>


 
mail.php :

Code :
  1. mail("mail@example.com", "mail depuis le site", "Le mail envoyé depuis le site\nMessage : $message" );


 
 
Voilà mon code simplifié, le mail est envoyé mais le Message renvoi vide ("Message :     [?]       " ).
 
Ou est mon erreur ?
Merci à vous :)

mood
Publicité
Posté le 31-08-2008 à 18:20:49  profilanswer
 

n°1780572
FlorentG
Unité de Masse
Posté le 31-08-2008 à 18:24:26  profilanswer
 

Déjà fait du code HTML valide :

Code :
  1. <form action="mail.php" method="post">
  2.   <div>
  3.     <label for="mail_msg">Votre message</label><br>
  4.     <textarea id="mail_msg" name="message" cols="50" rows="6"></textarea>
  5.   </div>
  6.   <div>
  7.     <input type="submit" value="Envoyer">
  8.   </div>
  9. </form>


Ca pique moins les yeux.

 

Ensuite côté PHP, vaut mieux pas utiliser les fonctionnalités de register_globals en utilisant directement une variable correspondant au name du champ (sécurité, pas portable, etc.), mais plutôt via $_POST :

Code :
  1. mail('mail@example.com', 'Mail depuis le site',
  2.  'Le mail envoyé depuis le site' . "\n" . $_POST['message']);


Manque encore la gestion d'erreur si le message est vide :)


Message édité par FlorentG le 31-08-2008 à 18:24:54
n°1780629
jpass2
Posté le 31-08-2008 à 19:37:29  profilanswer
 

SUPER, ça marche ! Merci :)
Je l'ai mis en
$message=$_POST['message'];
 
et dans mail je met simplement $message.
ça marche aussi :)
 
Avant de créer le topic j'avais fais  
$message= htmlspecialchars($_POST['message']);
mais ça ne marchait pas....
 
Pour la gestion d'erreur, pour ceux que ça intéresse, je viens d'ajouté :
 

Code :
  1. <?php
  2. $message=$_POST[message];
  3. if ($message ==("" ))
  4. {
  5. echo "<script>alert('Merci de saisir un message.\\nThanks to type a text.\\n:)')</script>";
  6. echo "<script>history.back()</script></p>";
  7. }
  8. else
  9. {
  10. // traitement du formulaire ...
  11. // affiche merci blablabla
  12. }
  13. }
  14. ?>

n°1780717
FlorentG
Unité de Masse
Posté le 31-08-2008 à 22:12:04  profilanswer
 

N'utilise pas de javascript pour les erreurs :) Déjà ça ne fonctionne pas si JS désactivé (ça arrive), et le message d'erreur ne restant pas, ça peut être du coup plus difficile pour corriger (si on se souvient pas de tout). Là ça va y'a un seul champ, mais pour un plus gros formulaire c'est pas cool [:sadnoir] Et rajoute au passage un texte en cas de succès :)
 
Une solution propre est de faire 2 fichiers séparés : un avec juste le formulaire, l'autre avec le traitement/validation.
 
Genre t'as un fichier formulaire.php :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>
  4.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  <title></title>
  6. </head>
  7. <body>
  8.  <h1>Formulaire de contact</h1>
  9. <?php
  10. if($ok) {
  11. ?>
  12.  <p>
  13.   Le message a été envoyé avec succès, nous nous efforcerons d'y répondre
  14.   dans les plus brefs délais
  15.  </p>
  16. <?php
  17. } else {
  18. ?>
  19.  <form action="mail.php" method="post">
  20.   <div class="errors">
  21. <?php
  22.    foreach($errors as $error) {
  23. ?>
  24.    <p><?php echo $error; ?></p>
  25. <?php
  26.    }
  27. ?>
  28.   </div>
  29.   <div>
  30.    <label for="mail_msg">Votre message</label><br>
  31.    <textarea id="mail_msg" name="message" cols="50" rows="6"><?php echo htmlspecialchars($message) ?></textarea>
  32.   </div>
  33.   <div>
  34.    <input type="submit" value="Envoyer">
  35.   </div>
  36.  </form>
  37. <?php
  38. }
  39. ?>
  40. </body>
  41. </html>


 
Et à côté le mail.php qui fait le traitement :

Code :
  1. <?php
  2.  
  3. $errors  = array();
  4. $message = '';
  5. $ok      = false;
  6.  
  7. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  8.  
  9.    $message = $_POST['message'];
  10.  
  11.    if(strlen($message) === 0) {
  12.  
  13.        $errors[] = 'Merci de saisir un message<br />Thanks to type a text';
  14.  
  15.    } else {
  16.  
  17.        mail('mail@example.com', 'Mail depuis le site', $message);
  18.        $ok = true;
  19.    }
  20.  
  21. }
  22.  
  23. require 'form.php';


 
Et là c'est top :)


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

  Je n'arrive pas à récupérer le textarea

 

Sujets relatifs
Récupérer les pièces jointes avec imap_fetchstructure()recupérer donnes de de tables
___Comment récupérer des données de <select> <option>
Recupérer la clé créée lors d'un INSERT dans postgres[MySQL]Aide pour recuperer des bbcodes
recuperer le contenu d'un fichierORACLE - recupérer une ressource
Récupérer checkbox par mail phpRecuperer une liste avec php mail
Plus de sujets relatifs à : Je n'arrive pas à récupérer le textarea


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