Page 1 sur 1

Une sorte de caddie virtuel

Posté : 13 sept. 2007, 11:17
par dread
Bonjour à tous!

Je viens vers vous afin de réaliser un pseudo caddie virtuel.

Je m'explique au travers d'un exemple:

Imaginez le site d'une agence immobilière. Vous effectué une recherche et atterrissez sur une page avec la liste des biens correspondant à cette recherche.
Maintenant vous avez repéré un bien qui vous interressait et vous souhaiteriez pouvoir le "sauvegarder". Vous en repérez deux ou trois autres que vous souhaitez aussi "sauvegarder" pour pouvoir sur une autre page (accessible ultérieurement par un lien) les afficher. Ainsi, vous auriez sur une seul page, l'ensemble des biens que vous auriez selectionné afin de les comparer entre eux.

Ce qui serait bien aussi, c'est que cette sélection soit gardée à la prochaine visite de l'internaute et qu'il puisse ajouter d'autres biens et même en supprimer.

Ca ressemble au fonctionnement d'un caddie ou panier mais avec moins de critères (pas de quantité ou de prix et de calculette).

Il faudrait que l'action de sauvegarder se fasse par l'intermédiaire d'une checkbox ou d'un simple lien.

Je débute en php et soucieux d'apprendre toujours plus, je sollicite des informations qui pourrait m'aiguiller vers la solution. J'avoue ne pas savoir du tout par où commencer.

Merci par avance pour toute aide apportée.

Posté : 13 sept. 2007, 11:37
par Calimero
Bonjour,

Je te conseille de te pencher (pas trop non plus, faudrait pas tomber...) particulièrement sur les sessions : http://fr.php.net/manual/fr/ref.session.php

Il y a aussi un bon tutorial sur les sessions à cette adresse : http://www.phpdebutant.org/article69.php

Posté : 13 sept. 2007, 11:48
par dread
J'ai déjà vu les liens que tu m'as envoyé.

Je comprend plus ou moins le fonctionnement des sessions même si parfois certaines choses me dépassent.

En fait, pour ma demande, je vois parfaitement ce que j'aurais à faire si en sélectionnant un bien, je devais mettre à jour un champ de ma bd pour ce bien. Genre avec un formulaire et l'utilisation de la checkbox, si checkbox cochée alors envoyer la valeur 1 à la table de mes biens pour le bien dont l'id est celui dans l'url.

Et ensuite, sur la page où l'on retrouverait tous les bien cochés, faire un select de tous les biens de ma table dont le champ "truc" aurait la valeur 1.

Maintenant, ce que je ne visualise absolument pas, c'est incrémenter un champ virtuel en session, afin que chaque visiteur puisse faire leur propre sélection, pour arriver au même résultat.

Posté : 13 sept. 2007, 12:31
par Calimero
Je suis pas sûr de comprendre de quoi tu parles quand tu dis "champ virtuel en session", mais pour moi au niveau de la session elle-même c'est très simple : tu te places en situation d'une page vue, donc d'un utilisateur (connecté) à la fois.

Au niveau du stockage en base des sélections du caddie, j'imagine assez bien une table contenant au moins deux champs : l'id du compte utilisateur et l'id du bien sélectionné. (Avec donc autant d'enregistrements que de biens sélectionnés par l'utilisateur). Il ne te reste suivant ce schéma qu'à écrire les parties de code qui font communiquer les deux ensemble...

Pourquoi parler d'incrémentation ? L'utilisateur peut-il choisir plusieurs fois le même bien ?

Posté : 13 sept. 2007, 13:21
par Cyrano
Bonjour,

Je te conseille de te pencher (pas trop non plus, faudrait pas tomber...) particulièrement sur les sessions : http://fr.php.net/manual/fr/ref.session.php

Il y a aussi un bon tutorial sur les sessions à cette adresse : http://www.phpdebutant.org/article69.php
Et j'ajouterais éventuellement un tuto sur les paniers ;)

Posté : 13 sept. 2007, 14:40
par dread
Merci pour les infos, je les ai consulté!!
Je comprends à présent la démarche à adopter.
Par contre, j'ai du mal à comprendre la notion de l'id du compte utilisateur:
- comment le générer?
- comment le récupérer pour l'enregistrer dans la bd ou le réutiliser pour ma requete qui génerera la liste des biens choisis par cet utilisateur?

Est-ce que c'est le session_id()?

Par contre, comme je le disais avant, il faudrait qu'au retour de l'utilisateur sur le site, il puisse retrouver sa sélection, donc comment faire pour garder le numéro de la session?

Posté : 13 sept. 2007, 14:59
par Calimero
Merci pour les infos, je les ai consulté!!
Je comprends à présent la démarche à adopter.
Par contre, j'ai du mal à comprendre la notion de l'id du compte utilisateur:
- comment le générer?
- comment le récupérer pour l'enregistrer dans la bd ou le réutiliser pour ma requete qui génerera la liste des biens choisis par cet utilisateur?

Est-ce que c'est le session_id()?

Par contre, comme je le disais avant, il faudrait qu'au retour de l'utilisateur sur le site, il puisse retrouver sa sélection, donc comment faire pour garder le numéro de la session?
Ca y est, le voilà ton problème : tout ça va ensemble en fait :-)

Le session_id n'est pas très utile en soi. Il sert simplement à ballader une grande quantité de données de page en page de manière temporaire. Un même utilisateur peut avoir plusieurs id de session.

Ce qu'il te manque c'est un mécanisme permettant d'associer les données, que tu vas ballader dans la session puis stocker en base, à un utilisateur. C'est à dire un système d'identification par login et mot de passe. grâce à cela, tu pourras savoir à qui associer les données contenues dans la session quand tu décideras de les stocker (Pour reprendre l'exemple du caddie, cela revient à valider la commande).

Sans cela, tu ne pourras pas tirer d'information telle que "l'utilisateur Martin a sélectionné les produits 4,8 et 11", tu ne pourrais obtenir que "l'utilisateur de la session 84456acca01356d4f3 a sélectionné les produits 4,8 et 11". De plus il te serait impossible de restituer le caddie en cours à l'utilisateur quand il reviendra sur le site.

Posté : 13 sept. 2007, 15:15
par dread
Je comprend l'utilisation du login et du mot de passe pour personnaliser un panier normal avec un nom et un prénom, mais je ne pense pas que dans mon cas ce soit vraiment nécessaire.

Je peux laisser de côté pour le moment le fait que l'utilisateur retrouve sa sélection à un retour ultérieur sur le site.

Il s'agit d'un site pour une agence immobilière et le service de sélection serait là pour une facilité de comparaison entre plusieurs offres: un petit plus par rapport aux autres sites d'agences immobilières.

Il n'y a pas de validation comme pour un panier aboutissant à un commande de produits.

Donc si je simplifie mon problème, je récupère l'id de la session avec session_id() et je l'enregistre dans ma bd en même temps que l'envoi de l'id du bien?

Et j'ai plus qu'à faire une boucle des biens enregistrés en fonction de l'id de session sur une autre page?

Par contre, histoire de ne pas surcharger la table de ma bd qui contiendra la sélection, comment fait-on pour la vider une fois que l'utilisateur a quitté le site: y'a t-il un paramètre de durée à prendre à compte, genre 2 jour après l'enregistrement, effacer les données de la base concernant l'utilisateur?

Désolé si je bombarde de questions mais suis-je sur la bonne piste?