Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formulaire de commande

3 réponses
Avatar
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

3 réponses

Avatar
Olivier Miakinen

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;";
}
}


Avatar
elia
Super génial, avec cela je vais m'en sortir, merci beaucoup ! pascal
Avatar
John GALLET
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