8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je suis en train de finir de créer ma première e-boutique et c'est laborieux...

Mais il me vient plusieurs questions résumées en 2 brèves (peut-être...) :

1 - Comment attribuer un achat au bon acheteur ? En effet, supposons qu'il y ait 3 ou + visiteurs simultanément, comme s'y retrouver ? Je sais bien sûr qu'il y a la possibilité de donner une id à la $_SESSION, (je ne veux pas me servir de cookies, au cas où) et même, plus subtil, d'intégrer l'IP du visiteur comme identité de reconnaissance.

J'ai donc, supposons, 3 ips : $ip1, $ip2 et $ip3. Cela me rend bien beau.... A qui je vends mon article ?

Bref, est-ce que les $_SESSION sont en vrac en mémoire ou associées à une page précise (dans ce cas plus de problème mais, alors, à quoi peut bien servir une id de session ?) ?

2 - Accessoirement, une autre question, le visiteur a acheté 5 pommes. Bon ! Je n'ai pas créé, bien entendu, de $_SESSION qui reprenne les 10 000 arclicles en stock donc chaque donnée de $_SESSION est créée au fur et à mesure des commandes.

Je vais me retrouver avec :



$_SESSION["carottes"] = 2;
$_SESSION["poires"] = 3;
$_SESSION["pommes"] = 5;
$_SESSION["poireaux"] = 1;
$_SESSION["courgettes"] = 3;
$_SESSION["tomates"] = 2;
$_SESSION["poivrons"] = 1;



Arrive une commande de 5 pommes.

Un nouveau champ est créé :



$_SESSION["pommes"] = 5;



donc 2 fois $_SESSION["pommes"] = 5; au lieu de $_SESSION["pommes"] = 10; ce qui au niveau du panier et/ou du bon de commande est assez lourd...

Il faudrait donc faire une boucle pour savoir s'il existe déjà une donnée $_SESSION["pommes"] mais avec quel compteur. Peut-on connaitre le nombre de données d'une $_SESSION ?

Merci de votre indulgent soutien.

Cordialement.
Modifié par whombat (13 Jan 2009 - 11:39)
Heu à mon avis il faut revoir le principe des sessions...

Tu crées ton panier par utilisateur donc un panier par session.
Ta variable de panier est un tableau qui contient ta référence article + la quantité + le prix...

Enfin je vois ça comme ça...
Oui, c'est ce qui est prévu, mais doit-on reconnaître une session pour lui imputer les actions du visiteur ou se reconnait-elle d'elle-même en fonction du navigateur du dit visiteur ?
Administrateur
whombat a écrit :
il y a la possibilité de donner une id à la $_SESSION

Une session possède toujours un id : http://fr3.php.net/session_id

whombat a écrit :
d'intégrer l'IP du visiteur comme identité de reconnaissance.

Attention
- l'ip peut changer en cours de navigation
- plusieurs personnes peuvent avoir la même ip (derrière un routeur par exemple)

whombat a écrit :
A qui je vends mon article ?

Il ne faut pas le voir dans ce sens-là (site vers acheteur), mais tout simplement stocker dans la session les articles mis de côté (acheteur vers site).

whombat a écrit :
donc 2 fois $_SESSION["pommes"] = 5; au lieu de $_SESSION["pommes"] = 10;

C'est une variable comme une autre donc il est possible de l'incrémenter si elle contient déjà une valeur (c'est une base de PHP).

whombat a écrit :
ce qui au niveau du panier et/ou du bon de commande est assez lourd...

Il faut trouver la structure de données appropriée pour stocker le panier. (C'est très important). Par exemple un tableau PHP linéarisé dans la session, ou des variables du type $_SESSION['produit_XXX'] avec l'identifiant produit. Il est aussi possible de créer une table temporaire dans MySQL reprenant juste l'identifiant de la session et les produits associés qui ont été choisis (jointure avec la table produits).
Bien sûr il existe des dizaines de méthodes.

whombat a écrit :
Peut-on connaitre le nombre de données d'une $_SESSION ?

C'est de la manipulation de tableaux
http://fr.php.net/manual/fr/function.count.php
http://fr.php.net/manual/fr/ref.array.php etc...

Bon courage !
Administrateur
whombat a écrit :
doit-on reconnaître une session pour lui imputer les actions du visiteur ou se reconnait-elle d'elle-même en fonction du navigateur du dit visiteur ?


La doc est très bien faite à ce sujet http://fr.php.net/manual/fr/function.session-start.php Smiley cligne

C'est le serveur qui gère la session, il n'y a rien à "penser" au niveau du navigateur. Et chacun possède sa propre session.
Merci à tous.

En fait, vous avez répondu à mes questions. L'explication des pages fournies par vos liens sont générales (bien sûr) mais je crois que je saurai les adapter.

Merci encore.

Cordialement.