Page 1 sur 2

Aide pour formulaire de contact

Posté : 29 mars 2010, 16:25
par pccall
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:

Re: Aide pour formulaire de contact

Posté : 29 mars 2010, 18:15
par visualight
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.

Re: Aide pour formulaire de contact

Posté : 29 mars 2010, 19:59
par devlop78
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 ..

Re: Aide pour formulaire de contact

Posté : 30 mars 2010, 15:35
par pccall
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:

Re: Aide pour formulaire de contact

Posté : 30 mars 2010, 16:23
par pccall
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>

Re: Aide pour formulaire de contact

Posté : 31 mars 2010, 01:30
par Dr@ke

Re: Aide pour formulaire de contact

Posté : 31 mars 2010, 09:24
par pccall
Merci pour ces conseils, je vais y jeter un coup d'oeil dans les plus brefs délais :wink:

Re: Aide pour formulaire de contact

Posté : 31 mars 2010, 12:53
par visualight
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

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 09:33
par pccall
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:

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 13:20
par MaximusCMS
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
               }

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 15:50
par stealth35
ou encore mieux
if(array_filter($_POST) === $_POST)

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 16:13
par Dr@ke
if(array_filter($_POST) === $_POST)
Je pense que je vais m'en servir :wink:

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 16:16
par MaximusCMS
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:

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 16:32
par stealth35
non array_filter ne bosse pas en référence, il te retourne l'array filter

Re: Aide pour formulaire de contact

Posté : 02 avr. 2010, 17:04
par AB
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']"  />