Mammouth du PHP |
571 Messages
20 août 2014, 17:13
c'est tout de même contraignant de pouvoir mettre des cases à cocher dans un formulaire paypal.néanmoins pour faire simple tu peux découper ta fonctionnalité en 2 parties.
-Une 1ère partie sera une page affichant les différents menus avec la possibilité de choisir son menu à l'aide des checkbox.A ce niveau les données(les menus) ne doivent pas être mises en dur pour peupler le formulaire, comme tu le fais, mais doivent provenir soit d'un tableau php soit d'une BD pour pouvoir vérifier qu'après soumission du formulaire que les prix des menus n'ont pas été altérés par un utilisateur mal intentionné.Après soumission du client, si les choix renvoyés par le client sont bien ceux du menu provenant d'un tableau(ou d'une bd) alors tu peux mettre en session ces menus et et aussi le total de la commande du client.
Dès que les données ont été mises en session tu peux rediriger le client vers la page du formulaire payapal.
- une 2ème partie sera page constituée du formulaire paypal. Etant donné que t'as déjà en session les choix de ton client ainsi que le total de sa commande(information la plus pertinente pour paypal), tu peux insérer dans le formulaire paypal le total de la commande(champ
amount) éventuellement les menus choisis par le client.si tu souhaites transmettre à paypal les items du menu, tu peux sérialiser les données(passage d'un type composite en chaîne de caractères ex:serialize($_SESSION['dat']) du menu qui se trouvent déjà en session.
Voilà une ébauche du code:
<?php
session_start() ;
//tableau des menus
//indice1 du tableau=>id du menu et indice2=>prix du menu
$tblMenu[][5]='crabe';
$tblMenu[][6]='6 huitres';
$tblMenu[][11]='12 huitres ';
$tblMenu[][15]='1 homard ';
?>
<form method="post" >
<?php foreach ($tblMenu as $key => $value) : ?>
<?php foreach ($value as $k => $val) ?>
<input type="checkbox" name="choix[<?php echo $key ?>][<?php echo $k ?>]" value="<?php echo $val ?>"> <?php echo $val,'-',$k,'euro' ?><br>
<?php endforeach ?>
<input type="submit" name="valider" value="valider votre choix">
</form>
<?php
$tot=0;
$choixEffectues=array(); //array contenant le ou les menus choisi par le client
if(!empty($_POST)){ //soumission du form
// var_dump($_POST['choix']);
$_SESSION['data']= array();
foreach ( $_POST['choix'] as $key => $value){
foreach ($value as $prix => $v){
if( !isset($tblMenu[$key][$prix]) ) //les menus envoyés par le form sont bien ceux qui se trouvent dans tblMenu
die("menu non conforme");//menu alterné. ici il est importé dans concevoir un système de log de ton appli
$choixEffectues[$key]=$tblMenu[$key][$prix]; //sauvergarde du choix de l'utilisateur
$tot+=$prix;
$_SESSION['total'] = $tot; //le total de la commande du client
}
}
$_SESSION['data']= $choixEffectues;//mise en session des menus du client
echo "total=$tot";
var_dump($_SESSION['data']);
//redirection vers la page du form de paypal
//header("Location : page_du_form_paypal.php");
exit(0);
}
?>
Pour pouvoir donner une flexibilité à ton application i.e permettre à l'admin de pouvoir modifier(faire évoluer les menus) les menus il est préférable que tu puisses créer une table menu qui stockera les différents menus.