8791 sujets

Développement web côté serveur, CMS

Bonjour,
Je suis débutante en php et je ne vois comment traiter mes deux checkbox, de plus je ne vois pas ce qui ne marche pas dans mon code php, réponse :

Attention! Les champs suivants doivent être obligatoirement remplis :

"; $msg_ok = "

Votre message a bien été envoyé et sera traité sous 24 heures."; $message = $msg_erreur; define('MAIL_DESTINATAIRE','celinepepette1@msn.com'); define('MAIL_SUJET','Message du site Guicheteau Andre'); // vérification des champs if (empty($_POST['entreprise'])) $message .= "Votre entreprise est
"; if (empty($_POST['activite'])) $message .= "Votre activité est
"; if (empty($_POST['nom'])) $message .= "Votre nom est
"; if (empty($_POST['prenom'])) $message .= "Votre prénom est
"; if (empty($_POST['adresse'])) $message .= "Votre adresse est
"; if (empty($_POST['npa'])) $message .= "Votre code postal est
"; if (empty($_POST['ville'])) $message .= "Votre ville est
"; if (empty($_POST['telephone'])) $message .= "Votre N° de téléphone est
"; if (empty($_POST['email'])) $message .= "Votre adresse e-mail est
"; if (empty($_POST['message'])) $message .= "Votre message est
"; // si un champ est vide, on affiche le message d'erreur if (strlen($message) > strlen($msg_erreur)) { echo $message; // sinon c'est ok } else { foreach($_POST as $index => $valeur) { $$index = stripslashes(trim($valeur)); } //Préparation de l'entête du mail: $mail_entete = "MIME-Version: 1.0\r\n"; $mail_entete .= "From: {$_POST['nom']} " ."<{$_POST['email']}>\r\n"; $mail_entete .= 'Reply-To: '.$_POST['email']."\r\n"; $mail_entete .= 'Content-Type: text/plain; charset="iso-8859-15"'; $mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n"; $mail_entete .= 'X-MailerPHP/' . phpversion()."\r\n"; // préparation du corps du mail $mail_corps = "Votre entreprise est : $entreprise et votre activite est : $activite"; $mail_corps = "Message de : $nom $prenom\n"; $mail_corps .= "Adresse : $adresse, $npa, $ville, $pays"; $mail_corps .= "No tel : $telephone"; $mail_corps .= "E-mail : $email"; $mail_corps .= $message; // envoi du mail if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) { //Le mail est bien expédié echo $msg_ok; } else { //Le mail n'a pas été expédié echo 'Une erreur est survenue lors de l\'envoi du formulaire'; } } ?>

merci de d'éclairer une débutante.
Bien à vous.

code :
<form action="traitement.php" method="post" enctype="text/plain" name="mail">
<p><fieldset id="premiere_question"><label>Que souhaitez-vous ?</label></p><br />
<input type="checkbox" name"premiere_question" value"demande_information" tabindex="10"/>
demande d'information<br />
<input type="checkbox" name"premiere_question" value"devis" tabindex="20"/>un devis<br />
<input type="checkbox" name"premiere_question" value"rendez-vous" tabindex="30"/>un rendez-vous<br />
<input type="checkbox" name"premiere_question" value"autres" tabindex="40"/>autres<br /></fieldset>
<p><fieldset id="deuxieme_question"><label>Pour quel secteur d'activité ?</label></p><br />
<input type="checkbox" name"deuxieme_question" value"habitat" tabindex="50"/>Habitat<br />
<input type="checkbox" name"deuxieme_question" value"gros-oeuvre" tabindex="60"/>Gros-oeuvre<br />
<input type="checkbox" name"deuxieme_question" value"agricole" tabindex="70"/>Agricole<br /></fieldset>
<input type="radio" name="civilte" value="M." tabindex="80"/ >M.<input type="radio" name="civilte" value="Mlle" tabindex="90"/ >Mlle
<input type="radio" name="civilte" value="Mme" tabindex="100"/ >Mme
</p><fieldset id="coordonnees">
<label>Entreprise</label>
<input type="text" name"entreprise" size="30" tabindex="110" /><br />
<label>Activité</label>
<input type="text" name"activite" size="30" tabindex="120" /><br />
<label>Nom</label>
<input type="text" name"nom" size="30" tabindex="130" /><br />
<label>Prénom</label>
<input type="text" name"prenom" size="30" tabindex="140" /><br />
<label>Adresse</label>
<input type="text" name"adresse" size="30" tabindex="150" /><br />
<label>Code postal</label>
<input type="text" name"code postal" size="30" tabindex="160"><br />
<label>Ville</label>
<input type="text" name"ville" size="30" tabindex="170"><br />
<label>	Téléphone</label>
<input type="text" name"telephone" size="30" tabindex="180"><br />
<label>E-mail</label>
<input type="text" name"email" size="30" tabindex="190"><br />
</fieldset>
<p class="titre">MESSAGE</p>
<fieldset id="message">
<textarea name="comments" rows="5" cols="40"></textarea>
</fieldset>
<p id="buttons">
<input type="submit" /><input type="reset" />
</p>
</form>


et traitement.php


[code]<?
$msg_erreur = "<br/>Attention! Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "<br/><br/>Votre message a bien été envoyé et sera traité sous 24 heures.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','celinep@msn.com');
define('MAIL_SUJET','Message du site Guicheteau Andre');

// vérification des champs
if (empty($_POST['entreprise']))
$message .= "Votre entreprise est<br/>";
if (empty($_POST['activite']))
$message .= "Votre activité est<br/>";
if (empty($_POST['nom']))
$message .= "Votre nom est<br/>";
if (empty($_POST['prenom']))
$message .= "Votre prénom est<br/>";
if (empty($_POST['adresse']))
$message .= "Votre adresse est<br/>";
if (empty($_POST['npa']))
$message .= "Votre code postal est<br/>";
if (empty($_POST['ville']))
$message .= "Votre ville est<br/>";
if (empty($_POST['telephone']))
$message .= "Votre N° de téléphone est<br/>";
if (empty($_POST['email']))
$message .= "Votre adresse e-mail est<br/>";
if (empty($_POST['message']))
$message .= "Votre message est<br/>";

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

  echo $message;

// sinon c'est ok
} else {

foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
             ."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-15"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-MailerPHP/' . phpversion()."\r\n";

// préparation du corps du mail
$mail_corps = "Votre entreprise est : $entreprise et votre activite est : $activite";
$mail_corps = "Message de : $nom $prenom\n";
$mail_corps .= "Adresse : $adresse, $npa, $ville, $pays";
$mail_corps .= "No tel : $telephone";
$mail_corps .= "E-mail : $email";
$mail_corps .= $message;

// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {

  //Le mail est bien expédié
  echo $msg_ok;
} else {

  //Le mail n'a pas été expédié
  echo 'Une erreur est survenue lors de l\'envoi du formulaire';
}

}
?>
Le code PHP n'est pas interprété correctement, mais la syntaxe semble bonne, à part un petit point qui cause parfois quelques soucis...
En PHP 5, il faut utiliser <?php et non <? pour commencer ses scripts. La syntaxe raccourcie n'étant plus activée par défaut. Et même si tu n'as pas PHP 5 ou cette option activée, c'est toujours une bonne habitude à prendre Smiley cligne


Par contre, le enctype de ton formulaire ne correspond pas vraiment. Change le enctype en
enctype="application/x-www-form-urlencoded"
(ou efface le, c'est la valeur par défaut normalement), et ça devrait fonctionner correctement... je pense Smiley cligne
Un simple copier coller dans éditeur de texte avec colorisation syntaxique montre que ton code html est mal formé !!!

résultat un simple var_dump($_POST); te montre qu'il n' y a que l'input "comments" et "submit" qui sont pris en charge
ce qui n'est pas énorme au vue de tous les autres champs.

Donc déjà, commence par former un html correct, je te conseille phpdesigner comme IDE.

Maintenant plusieurs remarques::

- evite les shorts tags <? ?>

- evite de mettre une action au formulaire si la page qui traite le formulaire est la meme que celle ou est le formulaire
php sait que c'est la page en cours et ca t'evite de te tromper dans le nom de fichier

- ta vérification des empty ne vérifie rien dutout

- enfin le plus important (vu que tu ne traites pas ton form en ajax)
il faut que tu mettes un echo $_POST['nom_du_champ'] dans les value des champs
car si le client qui remplit valide et se trompe il va devoir tout rerentrer

- enfin, il faut systématiquement que tu traites les champs en fonction de ce que les magic quotes sont activés ou non

Pour résumer, je te transmets le code d'un formulaire bien formaté ::



<?php

if(isset($_POST['sub']))
{
	var_dump($_POST);
	
	$b_for_empty_field=false;
	
	foreach($_POST as $s_key => $s_value):
	
		$s_clean_spaces_value=trim($s_value);
		
		if(empty($s_clean_spaces_value))
		{
			$b_for_empty_field = true;                            //si un des champs est vide on met le boolean a vrai et on arrete la boucle
			break;
			
		}else{ $a_cleaned_values [$s_key]=$s_clean_spaces_value; }   //sinon on remet tout dans un nouveau tableau
	
	endforeach;
	
	if(!$b_for_empty_field)
	{
			
		############# dans le cas ou tu fais un requette SQL, si les MGPC ne sont PAS activés il faut proteger ta query	
		//include('some_connexion_sql.php');	
			
		if(!get_magic_quotes_gpc())
		{
			foreach($a_cleaned_values as $s_key => $s_value) $a_cleaned_values [$s_key] = mysql_real_escape_string($s_value);
			
			/*
				PUIS ton traitement SQL
			*/
			
			$s_procedure_ok ='ok';
		}
		
		#################  dans le cas d'un mail si les magic quotes sont activés il faudra enlever les antislash inutiles'
		
		if(get_magic_quotes_gpc())
		{
			foreach($a_cleaned_values as $s_key => $s_value) $a_cleaned_values [$s_key] = stripslashes($s_value);
			
			/*
			 puis traitement de ton mail
			*/
				$s_procedure_ok ='ok';
		}
		
	}else{ $s_error_msg = 'Tous les champs doivent être remplis'; }
	
}
?>
<html>
	<form method="post">
		<input type="text" name="pouet" value="<?php echo get_magic_quotes_gpc() ? stripslashes($_POST['pouet']) : $_POST['pouet']; ?>"/> <br /> 
		<input type="checkbox" name="some_box" <?php echo isset($_POST['some_box']) ? 'checked="true"' : '' ; ?> /> <br /> 
		<textarea name="msg" ><?php echo get_magic_quotes_gpc() ? stripslashes($_POST['msg']) : $_POST['msg']; ?></textarea> <br /> 
		<input type="submit" name="sub" />
	</form>
	
<?php  

if(isset($s_error_msg)) echo '<font color="red">'.$s_error_msg.'</font>';
if(isset($s_procedure_ok)) echo $s_procedure_ok;
	
?>

</html>
Peux-tu m'expliquer Pouet-Pouet un peu plus ton code ? Je ne vois pas, par exemple où noter mon adresse email pour recevoir les résultats du formulaire ?
Je te remercie
Dure, dure de débuter