Aide pour formulaire de contact

Petit nouveau ! | 5 Messages

29 mars 2010, 16:25

Bonjour à tous,

Voila je suis en train de concevoir un site sur joomla pour une société (je suis étudiant) et j'aurais besoin de votre aide pour un tout petit détail.
Je suis débutant en php et j'aimerais avoir votre avis sur quelque chose.

Dans ma page de contact, tout fonctionne sauf quand tous les champs nécessaires ne sont pas introduits. Dans ce cas précis, il n'affiche pas le message " Vous n'avez pas rempli tous les champs nécessaires ".
J'aimerais que ce message apparaisse directement dans un cadre juste au dessus du formulaire.

Voici mon code :
<?php
	FUNCTION FORMULAIRE()
	{
		$affiche = 0;
		if(isset($_POST) && isset ($_POST['nom']) && isset ($_POST['prenom']) && isset ($_POST['societe']) && isset ($_POST['tel']) && isset ($_POST['email']) && isset ($_POST['message'])){
		extract($_POST);
		if(!empty($nom) && !empty($prenom) && !empty($tel) && !empty($message)){
			$message=str_replace("\'","'",$message);
			$destinataire="[email protected]";
			$sujet="Formulaire de contact";
			$msg="Une nouvelle demande d'information est arrivee \n
				Nom : $nom \n
				Prenom : $prenom \n
				Societe : $societe \n
				Numero de telephone : $tel \n
				Adresse e-mail : $email \n
				Type de demande : $objet \n
				Type de produit : $produit \n
				Message : $message";
			$entete="From: $nom \n Reply-To: $email";
			mail($destinataire,$sujet,$msg,$entete);
			Header("Location: http://www.pc-call.be/security/index.ph ... e&id=24&It emid=14");
			}
		else{
			echo "Vous n'avez pas rempli tous les champs !";
		}
	}
}
?>
<form method="POST" action="<?php FORMULAIRE();?>">
	<p>Pour nous contacter c'est très simple, remplissez ce formulaire et nous vous recontacterons dans les plus brefs délais.</p>
	<hr>
	<p>Les champs marqués d'un astérisque (<span style="color:red">*</span>) sont obligatoires<p>
	<table width="645px">
		<tr width="323px">
			<td>
				<p><label for="from">Nom<span style="color:red">*</span> :</label> 
					<input id="nom" name="nom" type="text" cols="25" size="10" style="width: 254px"/></p>	
			</td>
			<td>
				<p><label for="from">Prénom<span style="color:red">*</span> :</label> 
					<input id="prenom" name="prenom" type="text" cols="25" size="10" style="width: 255px"/></p>	
			</td>
		</tr>
		<tr>
			<td>
				<p><label for="from">Société :</label> 
					<input id="societe" name="societe" type="text" cols="25" size="10" style="width: 244px"/></p>	
			</td>
			<td>
				<p><label for="from">Numéro de téléphone<span style="color:red">*</span> :</label> 
					<input id="tel" name="tel" type="text" cols="10" size="10" style="width: 166px" /></p>	
			</td>
		</tr>
		<tr>
			<td colspan="2">
				<p><label for="from">Adresse e-mail : </label> 
					<input id="email" name="email" type="text" size="30" style="width: 529px"/> </p>	
			</td>
		</tr>
		<tr>
			<td>
				<p><label for="object">Type de demande :</label> 
					<select name="objet" style="width: 182px">
						<option SELECTED>&nbsp
						<option>Demande de démonstration
						<option>Information sur un produit
						<option>Devis gratuit
						<option>Autre
					</select>
			</td>
			<td>
				<p><label for="produit">Type de produit :</label> 
					<select name="produit" style="width: 217px">
						<option SELECTED>&nbsp
						<option>Camera IP
						<option>Firewall
						<option>VoIP
						<option>Serveur
						<option>Réseau
						<option>Autre
					</select>
			</td>
		</tr>
		<tr>
			<td colspan="2">
				<p><label for="message">Message<span style="color:red">*</span> :</label>
				<textarea id="message" rows="10" name="message" style="width: 635px"></textarea></p>
			</td>
		</tr>
		<tr>
			<td colspan="2">
				<p><input name="reset" type="reset" value="Effacer" style="width: 62px" /> <input name="send" type="submit" value="Envoyer"/></p>	
			</td>
		</tr>
	</table>
</form>
Si vous avez une solution, je vous en serais très reconnaissant :) Merci d'avance :wink:
Modifié en dernier par pccall le 30 mars 2010, 15:54, modifié 2 fois.

Eléphant du PHP | 428 Messages

29 mars 2010, 18:15

Je ne suis pas contre donner un coup de main MAIS :

- Si tu pouvais mettre ton code dans des balises
 (bouton PHP dans l'édition d'un message) ce serait plus sympa.
- Si tu pouvais également "styler" ton code pour que ce soit plus facile à lire c'est une bonne chose aussi ;)


Exemple style :

[php]<?php
FUNCTION FORMULAIRE()
{
  $affiche = 0;
      if(isset($_POST) && isset ($_POST['nom']) && isset ($_POST['prenom']) && isset ($_POST['societe']) && isset ($_POST['tel']) && isset ($_POST['email']) && isset ($_POST['message'])){
  extract($_POST);
            if(!empty($nom) && !empty($prenom) && !empty($tel) && !empty($message)){
              $message=str_replace("\'","'",$message);
              $destinataire="[email protected]";
....
            }
      }
}
?>
Merci,
raph ;)

EDIT : Je ne style pas mon code nécessairement quand je post un nouveau message mais quand il est long comme le tiens, cela s'avère un choix judicieux.

devlop78
Invité n'ayant pas de compte PHPfrance

29 mars 2010, 19:59

else{
$msg_e = "Vous n'avez pas rempli tous les champs !";
}


<form method="POST" action="?">
<?php if($msg_e) echo '<p id="msge" style="border:1px dotted red;background-color:#AAAAAA;font-size:1.3em;">'.$msg_e.'</p>'; ?>
<p>Pour nous contacter c'est très simple, remplissez ce formulaire et
nous vous recontacterons dans les plus brefs délais.</p>

Non ? Enfin ... j'ai regardé ton code en diagonal ..

Petit nouveau ! | 5 Messages

30 mars 2010, 15:35

Salut,

Merci d'avance pour votre aide :D

Je vous remets le code en plus clair plus haut.

Je vais aussi tester la solution de devlopnet, je vous dis quoi rapidement :wink:

Petit nouveau ! | 5 Messages

30 mars 2010, 16:23

else{
$msg_e = "Vous n'avez pas rempli tous les champs !";
}


<form method="POST" action="?">
<?php if($msg_e) echo '<p id="msge" style="border:1px dotted red;background-color:#AAAAAA;font-size:1.3em;">'.$msg_e.'</p>'; ?>
<p>Pour nous contacter c'est très simple, remplissez ce formulaire et
nous vous recontacterons dans les plus brefs délais.</p>

Non ? Enfin ... j'ai regardé ton code en diagonal ..
Salut devlopnet,

La fonction s'exécute bien comme avant mais le message "Vous n'avez pas rempli tous les champs !" ne s'affiche pas chez moi.

Merci à tous pour votre aide =D>

Mammouth du PHP | 985 Messages

31 mars 2010, 01:30

Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 5 Messages

31 mars 2010, 09:24

Merci pour ces conseils, je vais y jeter un coup d'oeil dans les plus brefs délais :wink:

Eléphant du PHP | 428 Messages

31 mars 2010, 12:53

else{
$msg_e = "Vous n'avez pas rempli tous les champs !";
}


<form method="POST" action="?">
<?php if($msg_e) echo '<p id="msge" style="border:1px dotted red;background-color:#AAAAAA;font-size:1.3em;">'.$msg_e.'</p>'; ?>
<p>Pour nous contacter c'est très simple, remplissez ce formulaire et
nous vous recontacterons dans les plus brefs délais.</p>

Non ? Enfin ... j'ai regardé ton code en diagonal ..
Salut devlopnet,

La fonction s'exécute bien comme avant mais le message "Vous n'avez pas rempli tous les champs !" ne s'affiche pas chez moi.

Merci à tous pour votre aide =D>

Salut,

As tu trouvé ?

A+
raph

Petit nouveau ! | 5 Messages

02 avr. 2010, 09:33

Malheureusement faute de temps, je n'ai pas encore pu approfondir le sujet...

J'ai déjà testé les solutions présentes ici et il n'y a plus que le message d'alerte qui ne s'affiche pas.

Si quelqu'un trouve une solution, je lui en serais très reconnaissant :wink:

Eléphanteau du PHP | 27 Messages

02 avr. 2010, 13:20

Bonjour, ne serait il pas plus sage de faire un truc de ce type

                if ( empty($nom) || empty($prenom) ||  empty($tel) || empty($message)){
                         // quelque chose manque : affichage du message d'erreur 
                         // contrôle de chaque variable pour déterminer laquelle est vide et le stipuler au client 
                } else {
                        // envoi du mail
               }
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

ViPHP
ViPHP | 5462 Messages

02 avr. 2010, 15:50

ou encore mieux
if(array_filter($_POST) === $_POST)

Mammouth du PHP | 985 Messages

02 avr. 2010, 16:13

if(array_filter($_POST) === $_POST)
Je pense que je vais m'en servir :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 27 Messages

02 avr. 2010, 16:16

humm .. ceci n'aurait il pas pour impact de vider TOUTES les variables ( de mémoire ) ?
ce qui rendrait dès lors impossible de fixer à l'utilisateur final quel champs est vide avec précision :oops:
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

ViPHP
ViPHP | 5462 Messages

02 avr. 2010, 16:32

non array_filter ne bosse pas en référence, il te retourne l'array filter

ViPHP
AB
ViPHP | 5818 Messages

02 avr. 2010, 17:04

if(array_filter($_POST) === $_POST)
Je pense que je vais m'en servir :wink:
Oui c'est le plus rapide mais à condition qu'il n'y ait pas de champs facultatifs dans le formulaire.

Si c'est le cas on peut aussi envisager de crée un formulaire avec les champs obligatoires regroupés dans un tableau pour pouvoir continuer d'appliquer les fonctions des tableaux au résultat
if(isset($_POST['control']) && array_filter($_POST['control']) === $_POST['control'])

<input type = "text" name = "control['nom']"  />
<input type = "text" name = "control['mail']"  />
<input type = "text" name = "option['phone']"  />