Double compteur en une requête
Résolu/Fermé
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
-
5 juil. 2014 à 17:35
microsoluces Messages postés 35 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 7 juillet 2014 - 7 juil. 2014 à 14:45
microsoluces Messages postés 35 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 7 juillet 2014 - 7 juil. 2014 à 14:45
A voir également:
- Double compteur en une requête
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double appel - Guide
- Double authentification google - Guide
- Compteur de contractions - Télécharger - Santé & Bien-être
9 réponses
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
5 juil. 2014 à 18:20
5 juil. 2014 à 18:20
Bonjour,
Je ne suis pas sûr que tu ai le droit de faire ça :
Je ne suis pas sûr que tu ai le droit de faire ça :
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes', 'SELECT COUNT(*) AS visiteur FROM connectes WHERE timestamp < ' . $timestamp_5min);Fais plutôt deux requête différente.
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
4
5 juil. 2014 à 18:54
5 juil. 2014 à 18:54
Merci Nhay pour ta réponse...
J'avais fais ça :
Dans le <footer>
Ca m'affiche (pour un seul champ dans la base)
1 visiteurs depuis le 05 juillet 2014
Actuellement en ligne : 0
Autrement dit : Le compteur semble fonctionner, mais actuellement en ligne ne
marche pas.
Il me faudrait une commande pour ré initialiser le comptage ?
J'avais fais ça :
// Visiteurs :
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);
// Actuellement en ligne :
$retour2 = mysql_query('SELECT COUNT(*) AS visiteur FROM connectes WHERE timestamp < ' . $timestamp_5min);
$donnees2 = mysql_fetch_array($retour2);
Dans le <footer>
<?php
//Affichage visites :
echo '<p>'. $donnees['nbre_entrees'] . ' visiteurs depuis le 05 juillet 2014';?><br /><?php
echo ' Actuellement en ligne : ' . $donnees2['visiteur'];
?>
Ca m'affiche (pour un seul champ dans la base)
1 visiteurs depuis le 05 juillet 2014
Actuellement en ligne : 0
Autrement dit : Le compteur semble fonctionner, mais actuellement en ligne ne
marche pas.
Il me faudrait une commande pour ré initialiser le comptage ?
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
4
5 juil. 2014 à 19:04
5 juil. 2014 à 19:04
Je viens en plus de me rendre compte que si je change de page
sur mon site, le compteur qui devrait se recharger du fait qu'il
est dans un <footer> qui lui même est sur une page footer.php
appelée par include....Et bien non ! Les autres pages affichent
des résultats vides !
visiteurs depuis le 05 juillet 2014
Actuellement en ligne :
sur mon site, le compteur qui devrait se recharger du fait qu'il
est dans un <footer> qui lui même est sur une page footer.php
appelée par include....Et bien non ! Les autres pages affichent
des résultats vides !
visiteurs depuis le 05 juillet 2014
Actuellement en ligne :
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 225
5 juil. 2014 à 19:10
5 juil. 2014 à 19:10
Allez, tous en choeur:
Les fonctions MySQL
Vont se faire supprimer
Tu cod'rais si bien sans elles
Quand la 5.6 va arriver
Ton code tu devras refaire
Tu seras dans la galère~
Ça serait tellement idiot
Alors passe à PDO!
Les fonctions MySQL
Vont se faire supprimer
Tu cod'rais si bien sans elles
Quand la 5.6 va arriver
Ton code tu devras refaire
Tu seras dans la galère~
Ça serait tellement idiot
Alors passe à PDO!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
4
5 juil. 2014 à 19:34
5 juil. 2014 à 19:34
J'ai déjà entendu cette chanson... je ne connais PDO que de nom.
Le peut que j'en ai vu m'a étonné : 4 lignes de code pour faire ce
que l'on faisait avant en 2 ! Mais bon,, il parait que c'est pas bien de
dire "c'était mieux avant..."
Je m'y mettrai un jour, ou j'attends que l'on passe à PDO2... pour
tout changer à nouveau !
En attendant, ça ne règle pas mon problème...Snif
Le peut que j'en ai vu m'a étonné : 4 lignes de code pour faire ce
que l'on faisait avant en 2 ! Mais bon,, il parait que c'est pas bien de
dire "c'était mieux avant..."
Je m'y mettrai un jour, ou j'attends que l'on passe à PDO2... pour
tout changer à nouveau !
En attendant, ça ne règle pas mon problème...Snif
Nhay
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
6 juil. 2014 à 09:26
6 juil. 2014 à 09:26
Premièrement, je ne te vois pas initialisé $timestamp_5min
Il est égal à quoi ?
Ton compteur devrait en effet être identique sur toute tes pages, peut-être as tu un système de cache ?
Il est égal à quoi ?
Ton compteur devrait en effet être identique sur toute tes pages, peut-être as tu un système de cache ?
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
4
Modifié par microsoluces le 7/07/2014 à 13:54
Modifié par microsoluces le 7/07/2014 à 13:54
Plantage dans le Copié/collé, j'ai bien une ligne :
Entre temps j'ai réglé mon problème de page qui affichait un résultat vide en
mettant tout le code (connexion à la base, lecture des données et affichage des
données dans ma page footer.php).
Voici le code qui ne fonctionne toujours pas pour les actuellement en ligne :
(Je pense qu'il faudrait "ré initialiser" le système de comptage après avoir
compté combien il y avait d'entrées dans la table - avant de compter combien
d'IP on un timestamp inférieur à 5 minutes)
$timestamp_5min = time() - (60 * 5);
Entre temps j'ai réglé mon problème de page qui affichait un résultat vide en
mettant tout le code (connexion à la base, lecture des données et affichage des
données dans ma page footer.php).
Voici le code qui ne fonctionne toujours pas pour les actuellement en ligne :
(Je pense qu'il faudrait "ré initialiser" le système de comptage après avoir
compté combien il y avait d'entrées dans la table - avant de compter combien
d'IP on un timestamp inférieur à 5 minutes)
<?php
// Connexion à la base de donnée :
mysql_connect("localhost", "moi", "123");
// Selection de la table :
mysql_select_db("base");
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);
if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}
// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table.
// Visiteurs :
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);
// Actuellement en ligne :
$retour2 = mysql_query('SELECT COUNT(*) AS visiteur FROM connectes WHERE timestamp < ' . $timestamp_5min);
$donnees2 = mysql_fetch_array($retour2);
?>
<?php
//Affichage du nombre de connectés !
echo '<p>'. $donnees['nbre_entrees'] . ' visiteurs depuis le 05 juillet 2014';?>
<br />
<?php
echo ' Actuellement en ligne : ' . $donnees2['visiteur'];
mysql_close();
?>
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
524
Modifié par Pitet le 7/07/2014 à 14:09
Modifié par Pitet le 7/07/2014 à 14:09
Salut,
Ta deuxième requête sql n'est pas correcte, il faudrait vérifier l'inverse.
Par exemple, supposons qu'un nouveau visiteur se connecte, il n'existe pas dans la bdd donc on l'ajoute avec le timestamp actuel (pour simplifier, on suppose que le timestamp actuel vaut 1000 min).
On vérifie juste après qui est connecté sur le site. On récupère le timestamp actuel moins 5 minutes et notre comparaison dans la requête sql nous donne :
visisteur.timestamp < timestamp_5min
soit
1000 < 995
Ce qui est faux donc l'utilisateur n'est pas retournée par la requête.
Si tu veux avoir le nombre d'utilisateur connecté sur ton site depuis 5 min, il faut faire la comparaison inverse :
visisteur.timestamp > timestamp_5min
soit
1000 > 995
Si au bout de 10 min le timestamp de l'utilisateur n'est pas mis à jour, la comparaison donnera :
1000 > 1005
et donc l'utilisateur ne sera pas considéré comme connecté (pas d'activité depuis plus de 5 min).
Bonne journée
Ta deuxième requête sql n'est pas correcte, il faudrait vérifier l'inverse.
Par exemple, supposons qu'un nouveau visiteur se connecte, il n'existe pas dans la bdd donc on l'ajoute avec le timestamp actuel (pour simplifier, on suppose que le timestamp actuel vaut 1000 min).
On vérifie juste après qui est connecté sur le site. On récupère le timestamp actuel moins 5 minutes et notre comparaison dans la requête sql nous donne :
visisteur.timestamp < timestamp_5min
soit
1000 < 995
Ce qui est faux donc l'utilisateur n'est pas retournée par la requête.
Si tu veux avoir le nombre d'utilisateur connecté sur ton site depuis 5 min, il faut faire la comparaison inverse :
visisteur.timestamp > timestamp_5min
soit
1000 > 995
Si au bout de 10 min le timestamp de l'utilisateur n'est pas mis à jour, la comparaison donnera :
1000 > 1005
et donc l'utilisateur ne sera pas considéré comme connecté (pas d'activité depuis plus de 5 min).
Bonne journée
microsoluces
Messages postés
35
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
7 juillet 2014
4
7 juil. 2014 à 14:45
7 juil. 2014 à 14:45
G E N I A L ! ! !
A force d'avoir le nez dedans j'avais pas vu la bourde...
Je viens de faire un essai sur mon PC (+ un autre en
Teamviewer) ça marche Nickel !
Merci Beaucoup Pitet !
A force d'avoir le nez dedans j'avais pas vu la bourde...
Je viens de faire un essai sur mon PC (+ un autre en
Teamviewer) ça marche Nickel !
Merci Beaucoup Pitet !