taxitat
Messages postés38Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention18 mars 2009
-
16 mars 2009 à 14:52
cs_mike1310
Messages postés232Date d'inscriptionjeudi 30 août 2007StatutMembreDernière intervention31 juillet 2009
-
18 mars 2009 à 14:54
Bonjour à tous,
J'essaye de créer un panier d'achat. J'en suis au stade expérimental et pour ne pas me casser la tête, à ce stade je "remplis" mon panier à travers un formulaire.
Pour faire plus simple, je vous écris et vous commente mon code:
<?php
session_start(); //démarrage de la session
$ref = $_POST['item']; //Je recupère les données de mon formulaire
$qte = $_POST['qte'];
//Création du caddie
if (!empty($_SESSION['panier'])){} //Si le 'panier' n'est pas vide, ne rien faire
else //Par contre, si le 'panier' n'existe pas, je le crée
{
$_SESSION['panier']=array(
'refProduit' => $ref,
'qteProduit' => $qte);
}
//je cherche dans le 'panier' si le produit est déjà dedans
$positionProduit = array_search($ref, $_SESSION['panier']);
//On reagarde si l'article existe déjà si oui on augmente sa qantité dans le panier
if ($positionProduit !== false){
$_SESSION['panier'][$positionProduit] += $qteProduit ;
}
//sinon on l'ajoute
else {
array_push( $_SESSION['panier']['refProduit'],$ref);
array_push( $_SESSION['panier']['qteProduit'],$qte);
}
//je visualise mon panier pour vérifier que mon code marche
echo '';
print_r($_SESSION['panier']);
echo '
';
//J'ai une petite sortie pour voir ce que j'ai envoyé
echo $ref. ' j\'en veux '. $qte;
?>
A ce stade, voilà que j'ai deux problèmes:
1. print_r m'affiche refProduit=>0 (quand ça devrait être toute autre chose) et ce, même si je mets un simple $ref ='Un test';
2. Si je renvois mon formulaire, la dernière ligne m'envoie bien ce que j'ai posté, mais print_r ne m'affiche que la 1e entrée Donc, je crois que ça n'enregistre rien dans mon array.
La fonction array_search me renvoie le numéro du array où se trouve ce que je cherche.
C'est à dire, que si je fais:
$positionProduit = array_search($tmp['refProduit'], $_SESSION['panier']);
cela doit renvoyer "0" ou "1" etc OU bien false
//Quoi qu'il en soit, j'ai l'impression que mon array_search est faux ou qi'l ne cherche pas les bonnes valeurs.
Peut être que je m'obstine à continuer dans mon ancien chemin et que ce n'est pas bon, mais ça me semble bcp facile que d'avoir une fonction.
Plutôt je devrais dire qu'il me semble que j'ai bien moins de code comme ça.
Par ailleurs, $positionProduit, je pourrais l'utiliser plus tard pour mettre à jour ou supprimer des entrées.
Si mon array_search n'est pas faux, je veux augmenter la qté qui existait déjà:
$_SESSION['panier'][$positionProduit] += $tmp['qteProduit'];
Si c'est faux (c'est à dire que la ref ne se trouve pas dans mon array), je fais un array_push
Bref, je voulais simplement expliquer mon point de vue même si je crois que tout est faux (ou alors, presque!)
C'est certes moins joli que ce tu proposais mais je pense que c'est plus simple.
Il me suffit d'appeller chaque element avec mon
$positionProduit = array_search($ref, $_SESSION['panier']['refProduit']);
et
$_SESSION['panier']['qteProduit'][$positionProduit]
ou
$_SESSION['panier']['refProduit'][$positionProduit]
Je trouve que l'affichage et les fonctions en sont simplifiés.
Puis, vu le boulot qui me reste à bâtir je ne veux pas bcp m'y attarder.
Cela dit, un ENORME MERCI POUR TON AIDE!!!
Quand j'aurais tout bouclé, je t'enverrai par mp l'adresse du site.
Vous n’avez pas trouvé la réponse que vous recherchez ?