IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

produit déjà vu (affichage du dernier produit sélectionné)


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut produit déjà vu (affichage du dernier produit sélectionné)
    Bonjour,

    Je travaille dans le cadre de mes études sur le développement d'un site web ecommerce.
    J'aimerai réalisé un module permettant d'afficher le dernier produit vu par un client X ou Y.

    Je cale par contre sur la requête SQL à exécuter...

    Est ce que quelqu'un aurait l'amabilité de m'aiguiller.
    J'ai de bonnes connaissances en graphisme mais je me débrouille également en xhtml css php mysql donc je pense que c'est dans mes cordes ^^.

    Merci par avance

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    S'il s'agit d'afficher le dernier produit vu au cours de la session en cours, je pense qu'il suffit de stocker en session l'identifiant de ce produit.

    S'il s'agit d'afficher le dernier produit vu la dernière fois que le client a visité le site, il faut mémoriser l'information en BDD et interroger celle-ci pour obtenir le résultat.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Merci pour ce renseignement précieux.

    En effet, ma base de donnée à un champ ID (pour identifier par un entier chaque article).
    Donc si j'ai bien compris, il faut juste aborder le coté SQL pour effectuer ce genre d'opération (affichage du dernier produit vu) et non du PHP (ou très légèrement bien sur)?

    Merci

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par claire34 Voir le message
    Donc si j'ai bien compris, il faut juste aborder le coté SQL pour effectuer ce genre d'opération (affichage du dernier produit vu) et non du PHP (ou très légèrement bien sur)?
    SQL te permet d'interroger la BDD mais PHP te permet d'afficher les résultats de la requête SQL. Il faut donc les deux.

    Mais reprenons ce que j'ai dit dans mon précédent message...
    Citation Envoyé par CinéPhil
    S'il s'agit d'afficher le dernier produit vu au cours de la session en cours, je pense qu'il suffit de stocker en session l'identifiant de ce produit.
    À un moment donné, l'utilisateur a fait une action qui le conduit sur l'affichage d'un produit. Parmi les informations du produit qui sont extraites de la BDD figure l'identifiant. Celui-ci n'est pas montré à l'utilisateur mais caché, par exemple dans un champ hidden. Cet identifiant peut être mémorisé en variable de session propre à l'utilisateur et réutilisé quand l'utilisateur revient par exemple sur la page des produits.
    => Dans ce cas, la seule information figurant dans la BDD est l'identifiant du produit mais le rapprochement à l'utilisateur n'est conservé que le temps de la session, il n'est pas enregistré en BDD.

    S'il s'agit d'afficher le dernier produit vu la dernière fois que le client a visité le site, il faut mémoriser l'information en BDD et interroger celle-ci pour obtenir le résultat.
    Cette fois, en partant du principe précédent, tu choisis d'enregistrer en BDD le dernier produit vu par l'utilisateur.
    Il te faut dans la BDD une table contenant les couples {identifiant_utilisateur, identifiant_produit}.
    Quand l'utilisateur revient visiter ton site, tu interroge cette table pour récupérer l'identifiant du dernier produit vu, ce qui te permet d'extraire toutes les informations nécessaires à l'affichage du produit.

    C'est plus clair ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Tout à fait j'ai compris merci beaucoup

    Je pense que la chose la plus judicieuse à faire est d'afficher le dernier produit vu de la session.
    Lorsque le client repassera ultérieurement le bloc "déja vu" sera vide jusqu'à ce qu'il retourne sur un produit.

    Je ne comprend pas par contre comment un ID fixe d'un article peut etre considérer comme une variable de session propre à chaque client???

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par claire34 Voir le message
    Je ne comprend pas par contre comment un ID fixe d'un article peut etre considérer comme une variable de session propre à chaque client???
    La session est propre à chaque visiteur du site. Autrement dit, quand je me connecte à developpez.com, j'ai ma session qui est différente de la tienne et qui contient des données propres à ma navigation et pas à la tienne.

    Si je vais visiter le produit toto, d'identifiant 12, tu stockes 12 dans une variable de ma session.
    Si toi tu vas voir le produit titi d'identifiant 158, tu stockes 158 dans une variable de ta session.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Je comprend mieux, merci beaucoup

    Je vais me renseigner sur les variables de session.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Bonjour,

    J'ai des difficultés à comprendre une chose par rapport à l'affichage des produits déjà vu.

    Certains sites proposent des l'affichage des produits déjà vu sans même s'identifier.
    Sachant qu'une variable de session se créé en se loguant comment faire pour afficher le dernier produit déjà vu sans se loguer ?

    Merci par avance

  9. #9
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si c'est vraiment le dernier produit que tu as vu sur le site sans même que tu te sois connectée, il y a au moins une solution : mémorisation de ton adresse IP accolée au produit vu par toi la fois précédente. L'adresse IP fait partie de la requête HTTP qui te permet de voir afficher la page du site. Cette adresse IP peut être extraite de la requête HTTP et mémorisée. Ça peut aussi être un cookie qui a été stocké sur ton ordinateur la dernière fois que tu as visité le site. Celui-ci récupère les infos du cookie quand tu te reconnectes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Merci beaucoup,

    Croyez vous qu'il faille construire une table ayant comme champs:
    - ip
    - id_produit

    Ne serait ce pas trop lourd pour la base de données dajouter des infos (INSERT) à chaque fois qu'une personne clique sur un produit ?

    Merci par avance

  11. #11
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu peux faire comme ça oui. Une requête est en principe très rapide, ça ne devrait pas poser de problème de performance. Peut-être faut-il aussi que tu y ajoutes la date pour trouver le dernier produit vu si tu veux enregistrer tous les produits vus par une IP et nettoyer la table des plus anciennes infos de temps en temps.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  12. #12
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Sachant qu'une variable de session se créé en se loguant comment faire pour afficher le dernier produit déjà vu sans se loguer ?
    Rien t'empêche de démarrer une session même si une personne ne s'est pas identifiée.

    Les sessions ce n'est pas juste fait pour un système d'identification, c'est principalement fait pour conserver une persistance sur une ou plusieurs données tout au long de la navigation.
    Donc si le but est de conserver en mémoire des données tout au long de la navigation, alors exploiter les sessions peut être nécessaire.

    Ceci dit, utiliser uniquement des cookies peut être tout aussi correcte, voir mieux.
    C'est juste peut être un poil plus compliqué pour principalement 3 choses :
    - S'il y a plusieurs données, on peu stocker ces donnée en utilisant 1 seul cookie, mais ça demandera de sérialiser/dé-sérialiser à chaque fois.
    - Ou utiliser une floper de cookies (pas très zen comme principe).
    - Un cookie à une limite en Ko, environ 4/5 Ko, ce qui peu être insuffisant (m'enfin, 4 Ko c'est déjà pas mal).


    Pour un historique de produits visités, donc une série d'IDs, un cookie peu largement faire l'affaire.
    Si c'est juste le dernier produit visité, ça n'en fait qu'1, ce qui est d'autant plus simple.
    De toute manière, les sessions sont totalement dépendantes des cookies, car il faudra 1 cookie pour 1 session (pour 1 navigateur en faite, un visiteur donc).

    Ne serait ce pas trop lourd pour la base de données dajouter des infos (INSERT) à chaque fois qu'une personne clique sur un produit ?
    Tant que la personne n'est pas identifiée, il me parais pas utile d'exploiter une Bdd pour ça, ça me semble aussi très lourd.
    De plus, se pose le problème de purger (supprimer) les données une fois la visite terminée.

    Ceci dit, si on a déjà une gestion de session même si la personne n'est pas identifiée, alors autant rajouter ce dernier produit visité, c'est plus simple.


    Bref, à toi de voir la solution la plus adaptée, tu en a donc 3 : Bdd, session/cookie, uniquement cookie.

Discussions similaires

  1. [MySQL] Affichage de fiche produit en PHP/SQL
    Par quaresma dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 09/03/2011, 00h48
  2. MySQL récupérer le dernier produit !
    Par kaayna dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/09/2010, 11h31
  3. affichage aléatoire des produits par ordre croissant.
    Par marcandre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/11/2008, 16h40
  4. Affichage Liste de Produits
    Par Identifiant dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 02/11/2008, 20h21
  5. [Swing] Affichage de fiches produits avec image
    Par calogerogigante dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 10/01/2008, 09h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo