Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2006, 16h08   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Gestion d'un panier: session et bouton précédent

Bonjour à tous,

Je m'y prends sûrement très mal pour monter un panier basé sur les sessions.
Le panier, classique, est alimenté par un 1er formulaire qui permet à chacun de choisir un produit et diverses options. J'enregistre donc un tableau dans la session, du type:

Code :
1
2
3
4
5
6
7
8
9
10
 
 
array_push($_SESSION["panier"],array(
"nom" => $_POST["nom"],
"prenom" => $_POST["prenom"],
"email" => $_POST["email"],
"code" => $_POST["code"],
"param1" => $_POST["param1"],
"param2" => $_POST["param2"], 
etc);
Après mon 1er formulaire, j'affiche une page intermédiaire qui récap sa commande et éventuellement le contenu de son panier ainsi que la gestion de celui-ci. A ce moment-là, tout est modifiable. Mais c'est également un formulaire......

Si le user clique sur "Payer votre panier", il arrive sur une page qui traite toutes les vars de session et garnit une table commande avec une boucle qui parcourt le tableau $_SESSION['panier']...et affiche le bouton de paiement.
jusque là, ça va.

Mon prob est que si le user fait "précédent" et modifie les options sur le form, les prix et le total panier se modifient bien dans la sessions grâce à array_splice() et array_push(),

par contre,

je n'arrive pas à trouver un moyen de savoir si le user a modifié des paramètres, (genre comparer la session a elle même...un peu dingue, quoi auquel cas je ferais un update de la table à la place d'un insert. Ca voudrait dire que la session ne s'est pas incrémentée selon le processus normal d'ajout, mais que grâce au bouton précédent, le user a modifié son dernier choix...

J'espère avoir été clair, parce que dans ma tête c'est un peu l'embrouille !
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 16h18   #2
Futur Membre du Club
 
Étudiant
Inscription : juin 2006
Messages : 19
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 19
Points : 15
Points : 15
Envoyer un message via MSN à analyzer44
Tu peux tous simplement mettre à jour ton tableau de session...
analyzer44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 16h22   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
euh, merci, tu es sûrement une bête en php...mais "simplement mettre à jour mon tableau de session", c'est ce que j'essaye de faire depuis des plombes...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 16h43   #4
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
as tu vraiment besoin de sauvegarder son panier meme s'il n'a pas encore payé ?
auquelles cas tu garnirai ta table commande apres le paiement.

Sinon si tu reste ainsi tu peut tout simplement ajouter une entrée à ton tableau de session genre :
$_SESSION["panier"]['insert'] = 0; // par exemple pour dire non inséré
et si tu fait l'insertion alors tu met à jour cette donné ainsi:
$_SESSION["panier"]['insert'] = 1; // par exemple pour dire que le panier à déjà été insérer.
Code :
1
2
3
4
5
6
 
if($_SESSION["panier"]['insert'] == 1){
 // il faut faire un update
}else{
 // il faut faire un insert
}
euhh tu capte le truc ? c'est sur qu'apres pour la gestion de panier y'a mieux m'enfin là çà peut te dépanné je pense
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 16h53   #5
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Oui, merci, je vois à peu près l'idée...
Je ne peux pas mettre à jour la table après paiement car je n'ai pas toutes les variables qui reviennent. Je fais un update paye=1 au retour.

Y'a sûrement hyper mieux pour la gestion d'un panier, mais je veux comprendre et progresser, donc faire moi même, pas employer un script "tout prêt".

Je vais regarder du côté de ton astuce

PS: je suis à Riom...Il fait doux, hein ?
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 17h14   #6
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Turquie

Informations forums :
Inscription : avril 2005
Messages : 611
Points : 459
Points : 459
héhé moi suis monté travailler à paris en faite depuis 1 mois héhé, enfin plus pour voir la vie parisienne qu'autre chose, je n'y resterai pas tres longtemps.

enfin pour en revenir au panier tu peux séparé un peu plus peux etre dans le genre:
Code :
1
2
3
4
5
6
$_SESSION['panier']['insert'] = 0; // indique que le panier n'est pas sauvegarder
$_SESSION['panier'][$article_id]['prix'] = $prix;
$_SESSION['panier'][$article_id]['qte'] = $qte;
$_SESSION['user'][$user_id]['prenom'] = $prenom;
$_SESSION['user'][$user_id]['nom'] = $nom;
$_SESSION['user'][$user_id]['prenom'] = $prenom;
etc...
et là tu aura une nouvelle dimension dans ton tableau pour chaque nouveau produit inséré
si le client décide de vider son panier mais de rester identifier alors tu as juste à faire :
Code :
$_SESSION['panier'] = null;
au contraire si le client veux utiliser un autre compte mais garder le panier alors
Code :
$_SESSION['user'] = null;
maximenet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 18h31   #7
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285


En m'inspirant de ce que tu m'avais donné comme piste, j'ai pu me débrouiller ! sympa, merci.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h03.


 
 
 
 
Partenaires

Hébergement Web