Accueil > Forum > > > > Problème Session et array
Problème Session et array
lundi 16 mars 2009 à 14:52:30 |
Problème Session et array

taxitat
|
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 '<pre>'; print_r($_SESSION['panier']); echo '</pre>'; //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!
|
|
lundi 16 mars 2009 à 16:22:54 |
Re : Problème Session et array

mike1310
|
ton $_POST['item'] est un tableau ou pas ? Comment est-il généré depuis l'html ? Fais voir ton code html pour voir ...
|
|
lundi 16 mars 2009 à 16:31:29 |
Re : Problème Session et array

taxitat
|
Merci de ta réponse.
Voici mon code html:
$reponse = mysql_query("SELECT * FROM favors WHERE id='.$id.') or die(mysql_error()); while ($donnees = mysql_fetch_array($reponse) ) { $name=$donnees[name]; };
echo '<form action="ajoutcaddie.html" method="post" id="formulaire">'; echo '<select name="qte">',"\n"; for($i=1; $i<=50; $i++) { echo '<option name ="qte" value="' .$i. '">' .$i. '</option>'; } echo '</select>',"\n"; echo '<input type="hidden" name="item" value="'.$name.'">'; echo '<a href="javascript:document.getElementById(\'formulaire\').submit()">ajouter au panier</a></form>';
J'ai mon catalogue dans une bdd "favors" où je choisis une réf ("$id") Bref, pour l'instant c'est sommaire mais je suis de l'avis d'y aller pas à pas et que si ça marche à ce stade ça marcher plus tard. Ce que je ne comprends pas c'est que la dernière ligne de mon code php (echo $ref et $qte j'obtiens bien ce que j'avais rentré mais visiblement ça ne s'enregistre pas dans mon array. :(
|
|
lundi 16 mars 2009 à 16:44:35 |
Re : Problème Session et array

mike1310
|
Réponse acceptée !
Alors je pense qu'il y a confusion entre les array et les valeur ... Deja pour commencer tu peux enlever le name ="qte" sur les options de ton select ... ça fait conflit avec le select actuellement. Ensuite, ici : 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); } $_SESSION['panier']['refProduit'] est une string ... et plus loin dans ton code tu fais ça : array_push( $_SESSION['panier']['refProduit'],$ref); ce qui signifierait que ton $_SESSION['panier']['refproduit'] est un array ... Il y a donc un conflit dans les données ... De plus, quand tu fais ça : $positionProduit = array_search($ref, $_SESSION['panier']); Il ne me semble pas que le array_serach est récursif (c'est à dire qu'il n'ira pas regarder dans chacun de tes array contenu dans ta session panier .. IL ne lira que dans le panier et non pas dans panier => refProduit et panier => qteProduit). Je te suggère donc de revoir la déclaration de tes variables de session lors de la création de ton 'caddie' 
|
|
lundi 16 mars 2009 à 17:15:02 |
Re : Problème Session et array

taxitat
|
Merci bcp pour tes conseils!
J'ai modifié mon formulaire comme suit: echo '<form action="ajoutcaddie.html" method="post" id="formulaire">'; echo '<select name="qteProduit">',"\n"; for($i=1; $i<=50; $i++) { echo '<option name ="qte" value="' .$i. '">' .$i. '</option>'; } echo '</select>',"\n"; echo '<input type="hidden" name="item" value="'.$name.'">'; echo '<a href="javascript:document.getElementById(\'formulaire\').submit()"> ajouter au panier</a></form>';
Je pense qu'il n'y a plus de conflit.
et ma page php: <?php session_start(); //démarrage de la session $ref = $_POST['item']; $qte = $_POST['qteProduit']; //Création du caddie if (!empty($_SESSION['panier'])){} else { $_SESSION['panier']=array(); $_SESSION['panier']['refProduit']=array(); $_SESSION['panier']['qteProduit']=array(); } //A présent, je crois que ce sont des arrays //Je cherche dans le tableau session si le produit existe déjà $positionProduit = array_search($ref, $_SESSION['panier']); //Si je mets $_SESSION['panier']['refProduit'] ça me donne une erreur "wrong data type for second argument" //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() empile un ou plusieur éléments à la fin d'un tableau array_push( $_SESSION['panier']['refProduit'],$ref); array_push( $_SESSION['panier']['qteProduit'],$qte); } //Dans les deux cas, j'obtiens un message: First argument should be an array (je croyais que c'était fait plus haut (!) echo '<pre>'; print_r($_SESSION['panier']); echo '</pre>'; echo $ref. ' j\'en veux '. $qte; ?>
Bref, après avoir jetté un coup d'oeil au manuel, je me demande si avec un if(in_array) ce ne serait pas plus simple... Qu'en penses-tu?
Merci encore de tes conseils!
|
|
lundi 16 mars 2009 à 17:32:43 |
Re : Problème Session et array

taxitat
|
J'ai modifié mon code comme ça: if (in_array ($ref, $_SESSION['panier']['refProduit']{ $_SESSION['panier']['qteProduit'] += $qte } else { array_push($_SESSION['panier']['refProduit'],$ref); array_push($_SESSION['panier']['qteProduit'],$qte); }
J'ai supprimé le array_search et ce qui venait par la suite.
En revanche, j'ai un message unexpected T_ELSE Une petite idée d'où cela peut venir?
Merci encore de votre aide!
|
|
lundi 16 mars 2009 à 17:39:22 |
Re : Problème Session et array

taxitat
|
Bref, je n'ai rien dit, je n'avais pas fermé les accolades  if (in_array ($ref, $_SESSION['panier']['refProduit'])){ $_SESSION['panier']['qteProduit'] += $qte; } else { array_push($_SESSION['panier']['refProduit'],$ref); array_push($_SESSION['panier']['qteProduit'],$qte); } Cela dit, j'ai jrs le message array_push (...) First argument should in an array Des idées? Merci bcp
|
|
mardi 17 mars 2009 à 10:26:09 |
Re : Problème Session et array

mike1310
|
Réponse acceptée !
C'est parce que $_SESSION['panier']['refProduit'] n'est pas un array :D
Cela vient surement du fait que ton test d'initialisation de ton panier n'est pas bon ... Essai de remplacer : if (!empty($_SESSION['panier'])){} else { $_SESSION['panier']=array(); $_SESSION['panier']['refProduit']=array(); $_SESSION['panier']['qteProduit']=array(); }
par
if (isset($_SESSION['panier'] && isset($_SESSION['panier']['refProduit']) && isset($_SESSION['panier']['qteProduit']) && !empty($_SESSION['panier']['refProduit'])){} else { $_SESSION['panier']=array(); $_SESSION['panier']['refProduit']=array(); $_SESSION['panier']['qteProduit']=array(); }
|
|
mardi 17 mars 2009 à 10:59:48 |
Re : Problème Session et array

taxitat
|
Mike1310, Merci bcp de ta réponse. J'avais modifié mon code comme suit:
<?php session_start(); //démarrage de la session $ref = $_POST['item']; //récupération des données postées $qte = $_POST['qteProduit']; //Création du caddie if (!empty($_SESSION['panier'])){} else { $_SESSION['panier']=array(); $_SESSION['panier']['refProduit']=array(); $_SESSION['panier']['qteProduit']=array(); } //Ajout nouveau produit if (in_array ($ref, $_SESSION['panier']['refProduit'])){ //Si l' produit existe déjà => augmenter la quantité $_SESSION['panier']['refProduit'][$ref] += $qte; } else { //S'il n'existe pas => ajouter la nouvelle entrée array_push($_SESSION['panier']['refProduit'],$ref); array_push($_SESSION['panier']['qteProduit'],$qte); } echo '<pre>'; //On visualise le tableau print_r($_SESSION['panier']); echo '</pre>'; ?>
Cela a l'air de bien marcher dans le cas d'un nouvel ajout mais pas dans le cas de vouloir rajouter des indices à un produit déjà existent. 
Je pense que là je commence quand même la phase 2, à savoir, pouvoir modifier et/ou supprimer un article. Je crois que ce n'est plus qu'un problème de arrays à présent. ça a peut être l'air facile pour certains, mais vu que c'est des tableaux à 2 dimensions, je galère un peu (dsl, je suis debutant) 
Cependant ton array isset me plait bien aussi (c'est à dire, si ça existe ok, sinon, crée-le)
Encore merci de m'éclairer avec ton avis. C'est tjrs sympa d'avoir une 2e opinion et une autre façon de voir les choses.
|
|
mardi 17 mars 2009 à 11:15:29 |
Re : Problème Session et array

taxitat
|
Bon, mon code avance! Je n'arrivais pas à ajouter une qté à un article déjà existant. J'ai fait ceci: //Ajout nouveau produit $positionProduit = array_search($ref, $_SESSION['panier']['refProduit']); if (in_array ($ref, $_SESSION['panier']['refProduit'])){ //Si l' produit existe déjà => augmenter la quantité $_SESSION['panier']['qteProduit'][$positionProduit] += $qte; } else { //S'il n'existe pas => ajouter la nouvelle entrée array_push($_SESSION['panier']['refProduit'],$ref); array_push($_SESSION['panier']['qteProduit'],$qte); } et à prsent ça marche!!  Bref, passons à la "phase 2" (supprimer ou modifier des quantités)
|
|
Cette discussion est classée dans : session, array, ref, panier, qte
Répondre à ce message
Sujets en rapport avec ce message
panier et gestion couleurs [ par titeuf974 ]
Bonjour!Voila, actuellement je dévelloppe un panier en php utilisant les sessions. Ce dernier fonctionne très bien. Ajout, suppression, modification.
probleme d'array (panier) [ par lyoan ]
Bonjour à tous, Je viens de commencer la création d'un panier et j'avoue rencontrer quelques problèmes. Voici mon code, dites moi si vous voyez des ch
POST et Get différent lors de l'envoi d'un formulaire (dans une boucle For) [ par Const4ntine ]
Bonjour,Après avoir passé près de 4h dessus, et avoir fait des tests de tout les cotés, je demande de l'aide ;)J'ai un panier qui se charge par rappor
Panier : Pb de quantité [ par Fo0Zie ]
Bonjour à tous les codeurs !Voilà mon problème que j'arrive en vain à résoudre. J'utilise un panier pour un mini site de vente, il fonctionne très bie
tableau array et session panier? [ par newlc ]
Salut à tous,je cherche à pouvoir ajouter une valeur a chaque fois que l'utilisateur entre une info dans un champs de saisie simple mais apres chaque
suppression d'un élément dans un tableau (caddie/panier) [ par davyboy ]
Hello, j'ai récupéré le code d'un panier PHP sur le JDN , http://www.journaldunet.com/developpeur/client-web/tu
balise div et select [ par yop59 ]
bonjour j'ai un gros souci,, cea fait 2jours que j'essai dans une table de type div contenant un article, un qte de modifier la qte avec un select et
Probleme de session [ par pam006 ]
Bonjour, Je désirerai créer un panier virtuel en php 5. J'ai trouver un super tuto : http://jcrozier.developpez.com/articles/web/panier/ Sauf que, q
Array et session [ par Astroma ]
Bonjour, Avant de vous poser mon problème, je voulais vous remercier pour toutes les informations et les conseils que j'ai pu trouver sur ce forum.
Warning: mysql_fetch_array() [ par Denzel68 ]
Bonjour voila je faix un petit bloc de login mais je un petit problème pour récupéré les donnes de l'avatar: Warning: mysql_fetch_array(): supplied ar
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|