Aide requête php base de donnée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aide requête php base de donnée

Re: Aide requête php base de donnée

par @rthur » 21 déc. 2018, 10:51

Bonjour,

Voici comment je le ferrais :
0) Tu initialises une variable $temps_passe à 0 dans laquelle tu va additionner la durée de chaque session.
1) Tu fais un SELECT sur ta table de tous les "LOGIN" pour un utilisateur particulier, ça te donne les heures de débuts de toutes les sessions de cet utilisateur.
2) Pour chaque LOGIN (boucle foreach) tu fais un SELECT dans ta table pour récupérer l'enregistrement immédiatement suivant au LOGIN actuel (timestamp>timestamp_du_login_actuel et LIMIT 1) , qui soit de l'utilisateur qui t'intéresse bien sûr, et dont la valeur est soit un LOGIN, soit un LOGOFF.
- Si c'est un LOGOFF, alors tu peux calculer la durée exacte de session.
- Si c'est un LOGIN, alors c'est que l'utilisateur ne s'est pas déconnecté et donc que tu ne connais pas sa durée de session, à toi de choisir la valeur que tu veux mettre (tu peux regarder dans Google Analytics pour avoir la durée moyenne d'une session pour ajouter quelque chose de réaliste dans ton calcul)
3) Tu additionnes la durée que tu viens de calculer (ou de définir) dans ta variable $temps_passe
4) A la fin de ton foreach(), tu auras le total du temps passé dans ta variable $temps_passe

:arrow: A toi d'essayer de le faire maintenant ! :-D

A noter que si tu as beaucoup d'utilisateurs ou beaucoup de sessions, ce process peut être assez gourmand en ressource.
Une solution pourrait être de modifier ta table des sessions pour loguer le LOGOFF sur la même ligne que le LOGIN et de calculer au moment du LOGOFF la durée de la session courante.
Comme ça, ça te fait faire un calcul très mineur au moment de chaque LOGOFF (dont temps de calcul réparti, c'est + scalable), et quand tu veux afficher la synthèse tu as juste à faire un UPDATE de tous les champs durée vide pour mettre la valeur par défaut, et un SELECT SUM(duree_session) pour avoir immédiatement la duree totale du temps passé sur ton site.

Aide requête php base de donnée

par private483 » 20 déc. 2018, 16:26

Bonjour à tous et à toutes,


Je me permets de vous contacter car j’ai un petite problème qui me ronge la tête depuis plus d’une semaine.
Je m’explique.
Je possède un sytème permettant de retracer les connexions et déconnexions des utilisateurs.
Celui ci me permet d’avoir une analyse des temps de connexions sur mon site.
Ci-joint une capture d’écran de ma base de donnée et une capture d’écran de mon Backoffice.

J’aurai aimé avoir un morceau de code ou une requête dans ma base de donnée me permettant de savoir combien de temps l’utilisateur est connecté sur mon site depuis son inscription.

J’ai pensé à cette version mais je n’arrive pas à la matérialisé:

Si log_operation du dernier id = logoff
Et que si log_operation du dernier id-1 = login
Alors faire timestamp du dernier id - timestamp du dernier id-1

Le problème est que dèfois les utilisateurs quitte le site puis revienne du coup j’ai 2 login d’affilé mais pas de logoff.

Je ne sais pas si je me suis bien fais comprendre mais en cas de besoin, n’hésitez pas.

Un grand merci pour votre aide,


Cordialement

https://ibb.co/gPjJGQg
https://ibb.co/bgRMQjP