
helenez
|
Ah ah! non c'est un peu + long en effet ;)
Voici mon code:
J'aimerai calculer le prix selon le nombre de boites commandées et inclure les frais de port, selon le type de courrier (standard: B ou rapide: A) et que ce total s'affiche en fin de formulaire, avant la case "envoi".
Il me faudrait bloquer le nombre de produits possibles à commander à 10 maximum, et définir, je suppose, que la commande de 1 produit en courrier A = 15.-, 1 produit en courrier B = 12.-, 2 produit en courrier A = 27.-, etc. jusqu'à 10 produits ( je vais inclure un texte qui stipule qu'au dela de 10 produits, il faut prendre directement contact par téléphone).
Merci!
<?
//---------------------------------------------------------------------------------------
$DOCUMENT_ROOT=$_SERVER["DOCUMENT_ROOT"];
$PHP_SELF=$_SERVER["PHP_SELF"];
//---------------------------------------------------------------------------------------
//Caracteres speciaux
// les ' & < / etc font toujours peter les script php, donc un tit script s'impose pour transformer ces caractères en code HTML
function correctString($texte) {
$t=htmlspecialchars ( $texte, ENT_QUOTES);
return nl2br($t);
}
// Si le formulaire a été validé, on recupere les donnees
// isset($_REQUEST['Submit'] --> ça veut dire : si le bouton de ton formulaire qui s'appelle Submit a été validé ( voir le code du formulaire : name="Submit" <input type="submit" name="Submit" value="Envoyer" />
// and isset($_POST['nom']) --> ça veut dire : et le champs 'nom' contient une donnée, alors on execute le script
if( isset($_REQUEST['Submit']) and isset($_POST['nom']) ) {
$societe=$_POST['societe']; // on recupere le champs nom
$nom=$_POST['nom']; // on recupere le champs nom
$prenom=$_POST['prenom']; // on recupere le champs prenom
$adresse=$_POST['adresse']; // on recupere le champs rue
$ville=$_POST['ville']; // on recupere le champs rue
$codepostal=$_POST['codepostal']; // on recupere le champs code postal
$email=$_POST['email']; // on recupere le champs mail
$telephone=$_POST['telephone']; // on recupere le champs téléphone
$nombreboites=$_POST['nombreboites']; // on recupere le champs prenom
$commentaire=$_POST['commentaire']; // on recupere le champs prenom
$delai=correctString($_POST['delai']); // on recupere le champs sujet et on le passe dans la fonction qui traite les caractères spéciaux
$type=correctString($_POST['type']);// on recupere le champs sujet et on le passe dans la fonction qui traite les caractères spéciaux
$nbr1=$_POST[nbr1]; // no dans champs caché généré par php
$nbr=$_POST[nbr]; // no saisi par l'utilisateur
//PREPARATION DU MAIL ///////////////////////////////////////////////////////////////
// Ce mail est au format HTML, on retrouve donc nos balise préférées table, tr, td etc...
// c'est ce message que tu va recevoir dans ta boite de messagerie
/* sujet */
$subject = "Formulaire de commande";
/* message */
$message = '
<html>
<head>
<title>Formulaire de commande</title>
</head>
<body>
<table width="330" border="0" cellspacing="2" cellpadding="2" class="p">
<tr>
<td width="100"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Type de commande:</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$type.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Société :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$societe.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Nom :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$nom.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Prenom :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$prenom.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">E-mail :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$email.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Telephone :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$telephone.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Adresse de facturation :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$adresse.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Ville :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$ville.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Code postal :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$codepostal.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Nombre de boîtes commandées :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$nombreboites.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Envoi :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$delai.'</p></td>
</tr>
<tr>
<td width="250"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">Commentaire :</p></td>
<td width="230"><p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color: #333333;">'.$commentaire.'</p></td>
</tr>
</table>
</body>
</html>
';
/* Pour envoyer un mail au format HTML, vous pouvez configurer le type Content-type. */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
/* D'autres en-têtes */
$headers .= "To: TEST <monadresse@gmail.com>\r\n";
$headers .= "From: TEST <monadresse@gmail.com>\r\n";
/* et hop, à la poste */
mail($to, $subject, $message, $headers);
//$msg ="Votre message a été envoyé avec succès !<br />Il sera traité dans les plus brefs délais.<br />Merci !";
// tout c'est bien passé, tu redirige l'utilisateur sur une page de confirmation de l'envoi de son formulaire
header ('location: http://www.site.ch/ok.html');
///////////////////////////////////////////////////////////////////////////////////////////////////
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de commande</title>
<script language="JavaScript">
<!--
//dans la fonction, tu recupere les éléments que t'as mis dans onSubmit (nom, prenom etc...)
function Envoyer(type,societe,nom,prenom,email,adresse,ville,codepostal,telephone,nombreboites,delai,commentaire) {
if(nom.value=="") { alert('Merci de compéter votre nom');nom.focus();return false }
if(prenom.value=="") { alert('Merci de compéter votre prénom');prenom.focus();return false }
if((email.value.indexOf('@',0) == -1)||(email.value.indexOf('.',0) == -1)||(email.value=="")) { alert('Problèmes avec votre adresse e-mail !'); email.focus();return false }
if(nombreboites.value=="") { alert('Merci de mentionner le nombre de produits que vous désirez commander');nombreboites.focus();return false }
if(type.value=="") { alert('Merci de compéter le type de commande');type.focus();return false }
if(telephone.value=="") { alert('Merci de compéter votre numéro de téléphone');telephone.focus();return false }
if(adresse.value=="") { alert('Merci de compéter votre adresse');adresse.focus();return false }
if(ville.value=="") { alert('Merci de compéter votre ville');ville.focus();return false }
if(codepostal.value=="") { alert('Merci de cocher la case correspondante');codepostal.focus();return false }
if(delai.value=="") { alert('Merci de cocher la case correspondante');delai.focus();return false }
return true
}
//-->
</script>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color:#333;
}
body {
background-color: #FFFFFF;
}
div#row {
margin-left: 25px;
margin-top: 25px;
margin-right: 20px;
margin-bottom: 35px;
text-align: left;
}
div#tableau {
margin-left: -8px;
}
.formw {
padding-left: 50px;
text-align: left;
}
.label{
padding-left: 50px;
text-align: left;
width: 100px;
}
-->
</style></head>
<body>
<!--
Detail de la balise FORM :
Action : c'est la page qui va récupérer les données du formulaire et envoyer le mail (dans ce cas, c'est la même page)
onSubmit : petit script javasript qui va s'assurer que les données sont correctement formatées (tous les champs obligatoires remplis etc...)
this.le nom de ton champs input
pour voir le script javascript, ça se trouve dans le header, en dessous de la balise title
-->
<div id="row">
<img src="images/logo.jpg" width="200" height="86" alt="logo" /><br><br>
<form action="form.php" method="post" onSubmit="return Envoyer(this.type,this.societe,this.nom,this.prenom,this.email,this.telephone,this.adresse,this.ville,this.codepostal,this.nombreboites,this.delai,this.commentaire)">
<p>Ce formulaire vous permet de commander nos produits
<br />
<br>
Pour des raisons de protection des données, nous vous prions de bien vouloir recopier le code de 4 chiffres ci dessus.<em> (Si les chiffres ne s'affichent pas tous, recharger simplement la page en ouvrant à nouveau le formulaire. Le formulaire ne s'enverra pas si vous n'entrez pas correctement les 4 chiffres.)</em><br>
<input type="hidden" name="nbr1" value="<?=$nbr?>" />
<br>
<?
mt_srand((float) microtime()*1000000);
$nbr = mt_rand(1000, 9999); // affiche un nombre aléatoire entre 1000 et 9999 ? nombre à 4 chiffres
$verif1 = substr("$nbr", 0, 1); // extraire le 1er chiffre
$verif2 = substr("$nbr", 1, 1); // extraire le 2ème chiffre
$verif3 = substr("$nbr", 2, 1); // extraire le 3ème chiffre
$verif4 = substr("$nbr", 3, 1); // extraire le 4ème chiffre
echo '<img src="images/form/'.$verif1.'.gif">'; // affiche l'image qui correspond au 1er chiffre
echo '<img src="images/form/'.$verif2.'.gif">'; // affiche l'image qui correspond au 2ème chiffre
echo '<img src="images/form/'.$verif3.'.gif">'; // affiche l'image qui correspond au 3ème chiffre
echo '<img src="images/form/'.$verif4.'.gif">'; // affiche l'image qui correspond au 4ème chiffre
?>
<br><br>
*Code à 4 chiffres :<br>
<input name="nbr" type="text" size="4" maxlength="4" />
<br>
<br>(Tous les champs noté * sont obligatoires)<br><br>
*Type de commande:<br>
<input type="checkbox" name="type" value="personnel" />
usage personnel
<br>
<input type="checkbox" name="type" value="commercial" />
usage commercial<br>
</p>
<div id="tableau"><table width="429" border="0" cellspacing="8">
<tr>
<td> Société<br>
<input type="text" name="societe" size="22" /></td>
<td>*Nom :<br>
<input type="text" name="nom" size="22" /></td>
<td>*Prénom :<br>
<input type="text" name="prenom" size="22" /></td>
</tr>
<tr>
<td>*Adresse :<br>
<input type="text" name="adresse" size="22" /></td>
<td>*Ville :<br>
<input type="text" name="ville" size="22" /></td>
<td>*Code postal :<br>
<input type="text" name="codepostal" size="11" /></td>
</tr>
<tr>
<td>*E-mail :<br>
<input type="text" name="email" size="22" /></td>
<td>*Téléphone :<br>
<input type="text" name="telephone" size="22" /></td>
<td> </td>
</tr>
</table>
</div>
<p>
*Nombre de boîtes :<br>
<input name="nombreboites" type="text" size="8" maxlength="5" />
<br>
<br>
*Délai de livraison (en jours ouvrables):<br>
<input type="checkbox" name="delai" value="Courrier A" />
Courrier A<br>
<input type="checkbox" name="delai" value="Courrier B" />
Courrier B<br>
<br>
<br>
Commentaires :<br>
<textarea name="commentaire" cols="50" rows="3"></textarea>
<br>
<br>
Vous recevrez une confirmation de votre commande par e-mail avec le montant à payer.
Celui-ci tiendra compte des frais d'expédition. Votre commande sera envoyée dès que nous seront en possession de votre paiement.
<br>
<br>
<input type="submit" name="Submit" value="Envoyer" />
</p>
</form></div>
</body>
</html>
|