Formulaire de commande

Le
elia
Bonjour,

Pour la vente d'anciennes revues mensuelles canines j'ai un
formulaire suivant avec pour chaque mois un champ où l'on peut
commander le nombre de revues du mois désiré:

<input name="Janvier_2001" type="text" value="<? echo $Janvier_2001 ?
>" />
<input name="Fevrier_2001" type="text" value="<? echo $Fevier_2001 ?
>" />

// value="<? echo $Janvier_2001 ?>" pour le retour sur la page en cas
de modification

J'envois ces données par post sur une page où la commande et affichée
comme telle:

<?
if ($Janvier_2001 !=""){echo " $ Janvier_2001 x Janvier 2001 Le
caniche <br />";} else {}
if ($Fevier_2001 !=""){echo " $Fevier_2001 x Févier 2001 Le bulldog
<br />";} else {}
if ($Mars_1996 !=""){echo " $Mars_1996 x Mars 1996 Le lévrier <br /
>";} else {}
if ($Juin_2001 !=""){echo " $Juin_2001 x Juin 2001 Le labrador <br /
>" ;} else {}

?>

Pour calculer le prix, je fais

$Nbre = ($Janvier_2001 + $Fevier_2001 + $Mars_1996 + $Juin_2001 ..);
$Prix = ( $Nbre * 8); //no problem


Si j'arrive bien afficher la commande ainsi que d'obtenir le prix, je
n'arrive pas à la mettre dans une variable pour l'envoyer dans un
mail.

1 Comment utiliser une bouche Foreach pour éviter tous ces if car sur
la centaine de revues sauf 2 ou 3 seront commandées? (Si un champ
reçoit un nombre alors afficher le nombre et la revue désirée)

Et comment mettre la commande des magazines commandés dans une
variable pour l'envoyer ensuite par email?

$Commande = ??


Merci, pascal
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #34247

Pour la vente d'anciennes revues mensuelles canines j'ai un
formulaire suivant avec pour chaque mois un champ où l'on peut
commander le nombre de revues du mois désiré:

<input name="Janvier_2001" type="text" value="<? echo $Janvier_2001 ?
" />
<input name="Fevrier_2001" type="text" value="<? echo $Fevier_2001 ?

" />



Plutôt que de nommer chaque variable par le nom du mois et le numéro de
l'année, tu pourrais donner comme nom interne le numéro de la revue.

Par exemple, si le numéro 1 était celui de mars 1996, alors à partir
d'un numéro $n tu peux retrouver la date comme ceci :
$annee = ($n / 12) + 1996;
$mois = ($n % 12) + 2;
if ($mois > 12) {
$mois -= 12;
$annee++ ;
}

Ton formulaire ressemblera alors à ceci :
<input name="nb[59]" type="text" value="<? echo $nb[59] ?>">janvier 2001
<input name="nb[60]" type="text" value="<? echo $nb[60] ?>">février 2001

En réception, au lieu d'avoir des variables $_REQUEST['Janvier_2001'],
$_REQUEST['Fevrier_2001'] etc., tu en auras une seule, de type tableau :
$_REQUEST['nb']. Mettons pour simplifier que tu l'affectes à une
variable $nb :
$nb = $_REQUEST['nb']

Pour calculer le prix, je fais

$Nbre = ($Janvier_2001 + $Fevier_2001 + $Mars_1996 + $Juin_2001 ........);


Avec foreach :
$Nbre = 0;
foreach ($nb as $nbitem) {
$Nbre += $nbitem;
}

Ou plus simple (et sans doute plus rapide) :
$Nbre = array_sum($nb);

Si j'arrive bien afficher la commande ainsi que d'obtenir le prix, je
n'arrive pas à la mettre dans une variable pour l'envoyer dans un
mail.

1 Comment utiliser une bouche Foreach pour éviter tous ces if car sur
la centaine de revues sauf 2 ou 3 seront commandées? (Si un champ
reçoit un nombre alors afficher le nombre et la revue désirée)

Et comment mettre la commande des magazines commandés dans une
variable pour l'envoyer ensuite par email?

$Commande = ??


$Commande = ''
foreach ($nb as $numero => $nbitem) {
if ($nbitem > 0) {
$Commande .= "$numero=$nbitem;";
}
}


elia
Le #34245
Super génial, avec cela je vais m'en sortir, merci beaucoup ! pascal
John GALLET
Le #34246
Bonjour,

1 Comment utiliser une bouche Foreach pour éviter tous ces if


Si tu tiens vraiment à conserver ce nommage (qui a l'avantage d'être
explicite) tu peux utiliser les "variables variables" ou l'expression
dynamique du nom de la variable. Cf http://faqfclphp.free.fr/#rub2.15 par
exemple.

Sinon utiliser des identifiants internes muets comme le suggère Olivier,
c'est ce qui est fait de manière classique (code barre...)

Et comment mettre la commande des magazines commandés dans une
variable pour l'envoyer ensuite par email?


C'est une chaîne de caractères comme une autre. Ensuite tout dépend si tu
envoies un mail en HTML (donc saut de ligne <br> ou <br/>) ou si tu
envoies un mail texte (donc saut de ligne n)

a++;
JG

Publicité
Poster une réponse
Anonyme