Discussion:
Formulaire de commande
(trop ancien pour répondre)
elia
2007-11-12 08:12:12 UTC
Permalink
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
Olivier Miakinen
2007-11-12 08:55:05 UTC
Permalink
Post by elia
Pour la vente d'anciennes revues mensuelles canines j'ai un
formulaire suivant avec pour chaque mois un champ où l'on peut
<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']
Post by elia
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);
Post by elia
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
2007-11-12 13:39:45 UTC
Permalink
Super génial, avec cela je vais m'en sortir, merci beaucoup ! pascal
John GALLET
2007-11-12 13:39:45 UTC
Permalink
Bonjour,
Post by elia
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...)
Post by elia
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

Continuer la lecture sur narkive:
Loading...