Formulaire - Problème avec le champ textarea

Résolu/Fermé
Shakadelavierge Messages postés 2685 Date d'inscription jeudi 11 mars 2004 Statut Contributeur Dernière intervention 12 octobre 2012 - 14 oct. 2010 à 11:39
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 - 15 oct. 2010 à 10:08
Bonjour,


J'ai un problème qui me fait m'arracher les cheveux depuis hier. Cela concerne un formulaire avec des vérifications en jscript et php.



Tout d'abord voici le code html:



<form name="message" action="submit.php" method="post" id="formulaire">

<div class="champsaisie">

        <div class="champ">
            <div class="label">
                <label for="name">Nom du contact</label>
            </div>
            
            <div class="field">
                <input type="text" name="name" id="name" />
            </div>
        </div>
        
        <div class="champ">
            <div class="label">
                <label for="email">eMail</label>
            </div>
            
            <div class="field">
                <input type="text" name="email" id="email" />
            </div>
        </div>
        
        <div class="champ">
            <div class="label">
                <label for="tel">Téléphone</label>
            </div>
            
            <div class="field">
                <input type="text" name="tel" id="tel" />
            </div>
        </div>
        
        <div class="champ">
            <div class="label">
                <label for="message"><br/>Description<br/>de votre projet</label>
            </div>
            
<textarea name="message" id="message" style="background-image:url(img/box_bg2.png); font-family:Britannic Bold,Century Gothic,Myriad Pro,Arial,Helvetica,sans-serif; color:#666666; font-size:16px; padding:4px 5px; width:350px; height:100px;" />
</textarea>
</div>
</div>

<div class="bouton">
<input type="submit" name="submit" id="submit" value="Envoyer" />
    </div> 

</form>




Le fichier php appellé, "submit.php se présente sous la forme suivante:


$sender_name = $_POST[name];
$sender_email = $_POST[email];
$telephone = $_POST[tel];
$contenu = $_POST[message];

$msg = "Nom du contact:\t$sender_name\n";
$msg .= "E-Mail du contact:\t$sender_email\n";
$msg .= "Message:\t$contenu\n\n";
$msg .= "Téléphone:\t$telephone\n\n";

$desti = "monmail@monmail.fr";
$sujet = "Titre du message";


[...]


et plus loin la commande pour envoyer le mail:

mail($desti, $sujet, $msg);






Les contrôles php sont de la forme suivante:



$errors = array();

if(!$_POST['name'] || strlen($_POST['name'])<3 || strlen($_POST['name'])>50)
{
	$errors['name']='Veuillez renseigner un nom valide. (Plus de 3 caractères)';
}

[...]



par exemple pour le nom à renseigner






Mon problème est que le champ textarea n'est pas pris en compte visiblement par la méthode POST: si je change le champ <textarea name="message" [...] ></textarea> en champ de texte classique du style <input type="text" name="message" [...] >, tout se passe à merveille et le mail est envoyé.

Dès lors que je modifie celà avec un champ textarea, le champ de texte n'est pas pris en compte et le mail ne parvient pas à l'adresse de destination.


Je n'ai peut être pas été assez clair, mais je ne coprend vraiment pas pourquoi le champ textarea n'est pas pris en compte alors que son nom est le bon.


Merci d'avance pour votre aide.





1 réponse

le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
14 oct. 2010 à 13:10
Salut voila ta baise d'ouverture du textaree

<textarea name="message" id="message" style="background-image:url(img/box_bg2.png); font-family:Britannic Bold,Century Gothic,Myriad Pro,Arial,Helvetica,sans-serif; color:#666666; font-size:16px; padding:4px 5px; width:350px; height:100px;" />


Elle se termine par "/>" ce qui signifie que tu fermes la balise (en gros). Supprime le "/" et essai.
3
Shakadelavierge Messages postés 2685 Date d'inscription jeudi 11 mars 2004 Statut Contributeur Dernière intervention 12 octobre 2012 136
14 oct. 2010 à 13:31
Salut, merci pour ta réponse.

Malheureusement cela ne marche toujours pas.

Cela ne change rien, très étrange.
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
Modifié par faboons le 14/10/2010 à 14:25
Salut,

Dans ta page submit.php est-ce que tu as fait un simple
echo $_POST[message];
pour voir ce que la page récupère ?
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
14 oct. 2010 à 14:40
En outre, j'ai copié/collé les balises form et textarea sur unepage et j'ai créé une page submit qui fait un echo de la variable et ... ça marche !

Donc, pour moi ça vient sûrement des contrôles php.
Tu les mets en commentaires et si ça marche il faut chercher l'erreur dedans.

@ pluche.
Fab.
0
Shakadelavierge Messages postés 2685 Date d'inscription jeudi 11 mars 2004 Statut Contributeur Dernière intervention 12 octobre 2012 136
14 oct. 2010 à 14:46
Voilà le script php en entier:


<?php

error_reporting(E_ALL^E_NOTICE);


$redirectURL = 'www.monsite.fr';

$sender_name = $_POST[name];
$sender_email = $_POST[email];
$telephone = $_POST[tel];
$contenu = $_POST[message];

$msg = "Nom du contact:\t$sender_name\n";
$msg .= "E-Mail du contact:\t$sender_email\n";
$msg .= "Message:\t$contenu\n\n";
$msg .= "Téléphone:\t$telephone\n\n";

$desti = "mail@mail.fr";
$sujet = "formulaire";



$errors = array();


if(!$_POST['name'] || strlen($_POST['name'])<3 || strlen($_POST['name'])>50)
{
	$errors['name']='Erreur';
}

if(!$_POST['email'] || !preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $_POST['email']))
{
	$errors['email']='Erreur';
}

if(!$_POST['tel'] || !preg_match(''[0-9]{10,12}'', $_POST['tel']))
{
	$errors['tel']='Erreur';
}

if(!$_POST['message'] || strlen($_POST['message'])<20)
{
	$errors['message']='Erreur';
}


if($_POST['fromAjax'])
{
	if(count($errors))
	{
		$errString = array();
		foreach($errors as $k=>$v)
		{

			$errString[]='"'.$k.'":"'.$v.'"';
		}
		

		die	('{"status":0,'.join(',',$errString).'}');
	}
	

mail($desti, $sujet, $msg);

	echo '{"status":1,"redirectURL":"'.$redirectURL.'"}';

	exit;
}


if(count($errors))
{
	echo '<h2>'.join('<br /><br />',$errors).'</h2>';
	exit;
}


header("Location: ".$redirectURL);
?>





Je joins également le script js qui peut également être à l'origine du problème:



$(document).ready(function(){
	
	$('#signupForm').submit(function(e){

		if($('#submit').hasClass('active')) return false;
		
		$('#submit').addClass('active');
		
		$('.errorTip').remove();
		
		$.post($('#signupForm').attr('action'),$('#signupForm').serialize()+'&fromAjax=1',function(response){
			
			if(!response.status)
			{
			
				$('input[type!=submit]').each(function(){
					var elem = $(this);
					var id = elem.attr('id');
					
					if(response[id])
						showTooltip(elem,response[id]);
				});
			}
			else location.replace(response.redirectURL);
			
			{
    document["signupForm"].submit('mail@mail.fr');
}
			
			$('#submit').removeClass('active');
		},'json');
		
		e.preventDefault();
	});

	
	$(window).resize();
});

function showTooltip(elem,txt)
{

	$('<div class="errorTip">').html(txt).appendTo(elem.closest('.formRow'));
}




Merci.
0
faboons Messages postés 269 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 22 janvier 2024 50
Modifié par faboons le 14/10/2010 à 15:22
Dis-moi question bête avant de chercher plus loin, tu écris bien des messages de moins de 20 caractères dans le textarea ?
0