Problème Session et array

Résolu
taxitat Messages postés 38 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 18 mars 2009 - 16 mars 2009 à 14:52
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 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.

Pouvez-vous m'aider, svp?

Merci à tous de votre aide!

25 réponses

taxitat Messages postés 38 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 18 mars 2009 1
17 mars 2009 à 16:04
A présent, print_r m'affiche ça:

Array
(
[0] => Array
(
[qteProduit] => 1
[refProduit] => Objet1
)

[1] => Array
(
[qteProduit] => 1
[refProduit] => Objet2
)
   //etc.
)


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!)

Encore une fois merci de ton aide!
0
taxitat Messages postés 38 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 18 mars 2009 1
17 mars 2009 à 16:41
Non, ce n'est pas(très) flou!  N'oublis pas que je suis debutant.
Bien au contraie! je te remercie bcp pour toute ton aide et tes conseils!!

Entre ce soir et demain je poste une réponse positive!
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
17 mars 2009 à 16:42
Lol oui j'y pense ... C'est pour ça que je m'explique comme cela ... Mais te fait pas de souci ... tu y arriveras
0
taxitat Messages postés 38 Date d'inscription mercredi 28 novembre 2007 Statut Membre Dernière intervention 18 mars 2009 1
18 mars 2009 à 10:49
Bonjour Mike,

Je viens aux nouvelles du fornt!

Après plusieurs tets (sans succès) j'ai decidé de venir à mon ancienne méthode
Array
(
[refProduit] => Array
(
[0] => Produit1
            ...
[n] => ProduitN
)

[qteProduit] => Array
(
[0] => qté1
            ...
[N] => qtéN
)
)

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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
18 mars 2009 à 14:54
ok pas de souci ...
0
Rejoignez-nous