Bonjour,

Je découvre le php pour récupérer les données d'un formulaire.
J'arrive bien à inclure la barre de navigation en php mais je n'ai jamais eu autre chose qu'une page blanche au lieu des messages prévus dans le traitement du formulaire.
Le formulaire est brut de décoffrage et je le teste avant de chercher à l'améliorer.
Le serveur de l'hébergeur m'a signalé plusieurs erreurs que j'ai corrigé mais maintenant je n'avance plus.
J'ai épluché plusieurs tutos, fait la chasses aux ( { ; et autres pattes de mouche, rien n'y fait.
L'erreur est certainement énorme mais je sèche.
Le formulaire en ligne:
http://www.bourg-paille-gite-equestre.com/essai/contact.php

Merci d'avance

Le sar
salut,
s'il s'agit de PHP ton lien ne sera pas très utile, tu devrais plutôt donner directement ton code sur le forum. Et puis si tu avais posté également les erreurs que ton serveur t'as signalé ça aurait aidé.
Une bourde de plus, j'imaginais qu'on pouvait récupérer le php sur le serveur ! Smiley biggol


	 <h2>Formulaire de contact: </h2>
        <p><br> </p>	
        <form action="traitement.php" method="post">
		  <label for="nom">Vos coordonnées<br><br>Nom : *</label>&nbsp; <input id="nom" name="nom" value=""  type="text"><br>
          <label for="rue">Rue : *</label>&nbsp; <input id="rue" name="rue" value="" type="text"><br>
          <label for="code postal">Code Postal :*</label>&nbsp; <input id="code postal" name="code postal" value="" type="text"><br>
          <label for="ville">Ville : *</label>&nbsp; <input id="ville" name="ville" value="" type="text"><br>
          <label for="email">Email : *</label>&nbsp; <input id="email" name="email" value="" type="text"><br>
          <label for="tel-fix">Tél.fixe </label>&nbsp; <input id="tel-fix" name="tel-fix" value="" type="text">
		  &nbsp;
		  <label for="tel-mobile">Tel-Mobile </label>&nbsp;<input id="tel-mobil" name="tel-mobile" value="" type="text"><br>
          <br>
          <br>
          Votre demande<br>
          <br>
          <label for="message">Message *</label> <textarea id="message" name="message" rows="8" cols="45"></textarea>
          <br>
          <br>
          <span style="color: red;">* champs obligatoires</span><br>
          <br>
          <button type="submit">Envoyer</button> </form>


  <!DOCTYPE HTML>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Traitement du formulaire</title>
</head>

<body>
    <?php
	if(
	isset($_POST) && 
	isset($_POST['nom']) &&
    isset($_POST['rue']) && 
	isset($_POST['code postal'])&&
    isset($_POST['ville']) && 
	isset($_POST['email']) &&
    isset($_POST['message'])&& 
	isset($_POST['repeter']) )
	
    $_POST['repeter'] = (int) $_POST['repeter'];
    	if ($_POST['repeter'] >= 1 AND $_POST['repeter'] <= 10) 
    
    if(
	!empty($_POST['nom']) &&
    !empty($_POST['email']) && 
	!empty($_POST['message']))
	{
    $destinataire = "mail@free.fr"; 
	$sujet = "Demande de contact";
    $message .= "Nom : ".$_POST['nom']."\r\n"; 
	$message .= "Rue : ".$_POST['rue']."\r\n"; 
	$message .= "Code Postal : ".$_POST['code postal']."\r\n"; 
	$message .= "Ville : ".$_POST['ville']."\r\n"; 
	$message .= "Email : ".$_POST['email']."\r\n"; 
	$message .= "Message :".$_POST['message']."\r\n"; 
	$entete = 'From: '.$_POST['email']."\r\n".
    'Reply-To: '.$_POST['email']."\r\n". 'X-Mailer: PHP/'.phpversion();
	
	if(
	mail($destinataire,$sujet,$message,$entete)){ echo 'Message envoyé'; }
	  else
	{ echo "Une erreur est survenue lors de l'envoi du formulaire par email"; }
    }
   	?>
  </body>
 </html>


Voila pour les codes, très basiques et inspirés des tutos.....
Les erreurs signalées par le serveur était des oublis de . et '

Merci encore pour l'aide
Modifié par 6l20 (12 Mar 2014 - 09:46)
Waow, ca faisais longtemps que j'ai pas vu ca !

Déja, commence par conriger tes "explicit casts". Pour assigner ta valeur en int, n'utilise pas :

$val = (int) $val2;


mais plutot :

$val = intval($val2)


Après, concernant tes opérateurs de comparaison, tu devrais les remplacer par les symboles


AND = &&
OR = ||


N'hésite pas a entourer chaque comparaison par des parenthèses.

if ($_POST['repeter'] >= 1 AND $_POST['repeter'] <= 10) 


devient

if (($_POST['repeter'] >= 1) AND ($_POST['repeter'] <= 10)) 


et avec tes nouveaux opérateurs :

if (($_POST['repeter'] >= 1) && ($_POST['repeter'] <= 10)) 


D'ailleurs, tu n'as pas d'accolade après cette ligne. Cela veut dire que seule la prochaine instruction est prise en compte dans ton if

Essaie de mettre un peu de propreté la dedans, et après, on s'arrangeras avec du débug.
Modifié par totopsy (11 Mar 2014 - 09:32)
Voili, voilou,
Si j'ai bien compris les conseils ?
J'ai aussi pensé qu'on pouvais regrouper les tests 2 et 3 ....?
Seulement je n'obtiens toujours qu'une page blanche ! Smiley help

  <!DOCTYPE HTML>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Traitement du formulaire</title>
</head>

<body>
    <?php
	if(
	isset($_POST) && 
	isset($_POST['nom']) &&
    isset($_POST['rue']) && 
	isset($_POST['code postal']) &&
    isset($_POST['ville']) && 
	isset($_POST['email']) &&
    isset($_POST['message']) && 
	isset($_POST['repeter']) )
	
    $_POST['repeter'] = intval ($_POST['repeter']);
         
    if(
	($_POST['repeter'] >= 1) && 
	($_POST['repeter'] <= 10) &&
	!empty($_POST['nom']) &&
    !empty($_POST['email']) && 
	!empty($_POST['message']))
	{
    $destinataire = "mail@free.fr"; 
	$sujet = "Demande de contact";
    $message .= "Nom : ".$_POST['nom']."\r\n"; 
	$message .= "Rue : ".$_POST['rue']."\r\n"; 
	$message .= "Code Postal : ".$_POST['code postal']."\r\n"; 
	$message .= "Ville : ".$_POST['ville']."\r\n"; 
	$message .= "Email : ".$_POST['email']."\r\n"; 
	$message .= "Message :".$_POST['message']."\r\n"; 
	$entete = 'From: '.$_POST['email']."\r\n".
    'Reply-To: '.$_POST['email']."\r\n". 'X-Mailer: PHP/'.phpversion();
	
	if(
	mail($destinataire,$sujet,$message,$entete)){ echo "Message envoyé"; }
	  else
	{ echo "Une erreur est survenue lors de l'envoi du formulaire par email"; }
    }
   	?>
  </body>
 </html>


La programmation en Fortran et Basic c'était il y a 35 ans, j'ai les neurones rouillés . Smiley angryfire

Grosse fatigue!
Modifié par 6l20 (12 Mar 2014 - 09:47)
Je n'ai pas compris tout ton code mais ça aurait été plus simple de nommer ton <input type=submit name=envoi> pour pouvoir faire un test uniquement à son niveau. Ton code deviendrait plus simple.

<?php
	if(isset($_POST['envoi'])) {
		// $_POST['repeter'] = (int) $_POST['repeter'];
		// if ($_POST['repeter'] >= 1 AND $_POST['repeter'] <= 10) 		<---------- ???
		
		if(isset($_POST['nom']) && isset($_POST['email']) && isset($_POST['message'])) {
			$destinataire = "mail@free.fr"; 
			$sujet = "Demande de contact";
			$message = "Nom : ".$_POST['nom']."\r\n"; 
			$message .= "Rue : ".$_POST['rue']."\r\n"; 
			$message .= "Code Postal : ".$_POST['code postal']."\r\n"; 
			$message .= "Ville : ".$_POST['ville']."\r\n"; 
			$message .= "Email : ".$_POST['email']."\r\n"; 
			$message .= "Message :".$_POST['message']."\r\n"; 
			$entete = 'From: '.$_POST['email']."\r\n".
			'Reply-To: '.$_POST['email']."\r\n". 'X-Mailer: PHP/'.phpversion();
		
			if(mail($destinataire,$sujet,$message,$entete)){
				echo 'Message envoyé'; }
			else {
				echo "Une erreur est survenue lors de l'envoi du formulaire par email"; 
			}
		}
	}
?>

Au passage, tu ne peux pas mettre un ".=" à une variable non initialisée. Le tout premier donc pour la variable $message sera un simple "=".
Modifié par 6l20 (12 Mar 2014 - 09:45)
Ca m'as l'air pas mal comme ca.

Exact pour le
$message .= 


Et si je peux te donner un conseil, change ton adresse mail sur le forum, sinon tu risques de recevoir pas mal de mail Smiley cligne
Bonjour,
Merci beaucoup à totopsy et Zelalsan pour leur aide, j'aurais pu chercher longtemps pour la variable non initialisée. J'ai tout démonté pour partir sur un code minimal et j'ai trouvé que le deuxième if ne n’exécutais pas pour une accolade mal placée.