Pour le select :
combinaison javascript + php
1- creation d’un select avec changement automatique et redirection url
$liste => creation d’une variable select qui contiendra mon selecteur
2- le onchange est la fonction qui va declencher l’action (valeur de l’option selectionne, dans mon cas un lien avec les variable) lorsque je selectionne dans le selet la qte desire
le top.location la manier en javascript de designer un
choix_qte.options[choix_qte.selectedIndex].value => la un peu plus complexe c’est vrai mais simple en fait. je demande que la valeur du selecteur que j’ai nomme choix_qte soit la valeur a envoye via le form
OnChange="top.location=choix_qte.options[choix_qte.selectedIndex].value;
3- la c’est la qte (var=> $qte) que j’ai recupere dans la sessions qui est par defaut a 1 mais que l’utilisateur aura pu modifier auquel cas la valeur modifier sera apparente
$liste .=’’.$qte.’’;
4- la je decide que je veut seulement des qte de 1 à 20 qui s’affiche dans mon selecteur donc $k = 1 et tant que $k est inférieur à 21 alors on augmente $k de 1 a chaque jusqu’a que $k soit egal à 20
for ($k = 1 ; $k < 21 ; $k++ ){
5- la c’est les options
des que je selectionne une qte alors on est redirige automatiquement sur la page select.php avec r qui vaut qte (cf pseudo frame en php)
le &(&) //norme w3c
strip_tags(SID) => transmission de l’id de session avec protection contre les attaques xss
la valeur new_qte est egal à la valeur de $k (soit de 1 à 20 max dans mon cas)
et pour que l’utilisateur voit j’affiche le $k
$liste .= ‘’.$k.’’
ce qui donne dans ton cas :
[cpp]
//page => select.php (exemple)
<?php
//On recupere l'Id de chaque produit
$queryID=mysql_query("select id, cat, ref, prix from galerie where Id='".$AfficheGalerie['id']."'");
$InfoProd=mysql_fetch_array($queryID);
//creation du select
$liste = '<form'>
$liste ='<select name="quantite" class="input" size="1" OnChange="top.location=quantite.options[quantite.selectedIndex].value;">';
$liste .='<option selected>'.$qte.'</option>'; //$qte valeur que j'ai recupere precedement qui correspond a la qte stocke dans la session pour l'id du produit
for ($k = 1 ; $k < 10 ; $k++ ){ // dans ton cas je met 9 a la qte max
$liste .= '<option value="caddie.php?MenuNumero=3&amp;cat='.$InfoProd['cat'].'&amp;id='.$InfoProd['id'].'&amp;quantite='.$k.'&amp;ajout=ajout&amp;'.strip_tags(SID).'">'.$k.'</option>';//j'appelle la page caddie pour le traitement de la session apres a toi d'adapter a ton code
}
$liste .='</select>'
$liste .='</form>';
?>
// page => panier.php(exemple)
<?php
session_start();
include('select.php');
//…ton code
?>
Quantité : //je te conseille plutot une feuille de style
Séléctionnez la quantité : <?php echo $liste; ?>
|
//…ton code
//page caddie.php par exemple
<?php
session_start();
$tmp = $_GET['ajout'];
switch($tmp){
case "ajout" :
//on parcours toute la sessions a la recherche de la ligne contenant l'id produit existant
for ($i=0 ; $i < count($_SESSION['achats']) ; $i++){
if ($_SESSION['achats'][$i]['id'] == $_GET["id"] ){
array_splice($_SESSION['achats'], $i, 1); //suppresion du tableau contenant les ancienne valeur
}
}
//ajout des nouvelle qte pour l'id
$_SESSION['achats'][] = array ("id" => $_GET['id'], "qte" => $_GET['quantite']);
//page de redirection avec un header par exemple suivi d'un exit();
header('location:tapage.php?var1=1&var2=2&'.strip_tags(SID));
exit(); //pour etre sur que le code en dessous ne sera pas interprete par le serveur en cas de petit pb
//exemple de redirection avec l'id de sessions
break;
case "vider" : //exemple de vider le panier
session_destroy();
//une redirection par ex comme ci dessus
break;
default :
//page de redirection ou page erreur par exemple au cas ou un petit malin aurai essaye de changer la valeur ajout dans l'url ;)
break;
}
//...reste de ton code
?>
[/cpp]
en utilisant cette methode il ne faut pas oublier de changer les parametre $_POST à $_GET
Perso je prefere distinguer le html du php plus lisible
voila j’espere avoir ete assez clair dans mes explications
a toi d’adapter tout cela a ton code
attention le select en l’etat ne sera pas fonctionnel pour recupere tous tes id produits a toi de le mettre dans une boucle et de l’inserer dans ta page
la tu as tout le cheminement de page en page pour la modification des quantite
j’ai pas eu le temps de tester tous cela mais cela devrait fonctionner
si ca bug tien moi au courant il est 5 hr du mat j’ai peu etre fait une faute de frappe