Page 1 sur 1

Récuperer valeur d'une table à une heure précise ?

Posté : 06 août 2007, 13:16
par Tyrese
Salut,

J'ai un compteur de visite : http://persol.free.fr/compteur_visite/
Et j'aimerais ajouter les visiteurs de la veille à ce compteur.

Ainsi je me demandais s'il était possible de récupérer la valeur des "visiteurs d'aujourd'hui" à 0h00, et ensuite, d'introduire cette valeur dans une autre colonne de ma table : "visiteurs d'hier".

Auriez vous des suggestions sur ma requête ?

Posté : 06 août 2007, 13:54
par Ryle
Si tu as un champ datetime ou timestamp dans ta table, c'est tout à fait possible. Il suffit de spécifier dans la clause WHERE de ta requête les dates et heures sur lesquelles tu souhaites filtrer les résultats :)

Posté : 06 août 2007, 16:23
par Tyrese
merci pour cette info =)

j'ai donc comme tu me l'as indiqué utilisé le timestamp etc. Mon code donne cela
$date_d_hier = strtotime("day -1"); 
$query2 = mysql_query ("SELECT COUNT(*) AS total FROM dp_utilisater WHERE timestamp='$date_d_hier' ")

$yesterday =  mysql_num_rows($query2);
[EDIT] petite erreur, la colonne timestamp n'existait pas, je l'avais renommé en lastquerytime. Erreur corrigée en $query2 = mysql_query ("SELECT COUNT(*) AS total FROM dp_utilisater WHERE lastquerytime='$date_d_hier' ")

Posté : 06 août 2007, 16:28
par d0m
es tu sur que ta requete SQL abouti?
rajoute voir le message d'erreur :
$query2 = mysql_query ("SELECT COUNT(*) AS total FROM dp_utilisater WHERE timestamp='$date_d_hier' ") or die('erreur de requete : ' . mysql_error()); 

Posté : 06 août 2007, 16:29
par Tyrese
justement j'ai fait une erreur dans ma colonne, j'ai rectifié le probleme mais je souhaiterais qu'lon m'éclaire sur le résultat de mon code, est il bon en sachant que mon lastquerytime est l'heure à laquelle la personne se connecte et non une date.

Posté : 06 août 2007, 16:32
par d0m
c'est c'est la date au format timestamp ton code n'est pas bon car chaque date dans ce format est précise à la seconde près.
En faisant une vérification sur l'égalité de la date de hier, tu seulement prendre les résultats de la date de hier à 0:00:00.
Il faut prendre les dates comprises entre hier 0:00:00 et hier 23:59:59

Posté : 06 août 2007, 16:50
par Tyrese
Ok je vois.

Alors dans ce cas là voilà mon interrogation. Je poste le code et j'argumente ensuite =)

Le code actuel pour récupérer les visiteurs de la veille (erroné) + les connectés de moins de 5 minutes :
$date_d_hier = strtotime("day -1"); 
$query2 = mysql_query ("SELECT COUNT(*) AS total FROM dp_utilisater WHERE lastquerytime='$date_d_hier' "); or die('erreur de requete : ' . mysql_error()); 

$yesterday =  mysql_num_rows($query2);

$fiveminago = time() - 5 * 60;
$query1="SELECT pseudo FROM dp_utilisater WHERE lastquerytime>'$fiveminago'"; //Tous ceux qui ont fait un truc y a moins de 5min
$result = mysql_query($query1);
while ($row = mysql_fetch_array($result)) //Tant qu'on a des noms
{
 echo $row[0]."<br>"; //On les affiche
}
et voici le code qui m'enregistre l'heure des utilisateurs qui se log
  $lastquerytime = time(); //Il a exécuté ce code MAINTENANT
  $query1 = "UPDATE dp_utilisater SET lastquerytime='$lastquerytime' WHERE pseudo='$pseudo'"; //On l'écrit dans la table
  mysql_query($query1);
Par rapport à ce que tu m'as, dois je modifier $lastquerytime = time(); par $lastquerytime = strftime() ?
Cependant si ça marche, il ne me restera qu'à modifier la ligne:
- $fiveminago = time() - 5 * 60;
- $date_d_hier = strtotime("day -1");

(je vois pas comment mais je chercherais si mon premier raisonnement est bon :p)

Désolé pour toutes ces interrogations mais il est sur que je débute et j'apprends sur le tas les différentes fonctions, et à chaque erreur j'en apprends un peu plus

Posté : 08 août 2007, 13:24
par Tyrese
J'ai réfléchis à tout ce code et il y a un probleme :)

En effet, ce code :

Code : Tout sélectionner

$query2 = mysql_query ("SELECT COUNT(*) FROM dp_utilisater WHERE lastquerytime='$date_d_hier' ") or die('Erreur SQL : ' . mysql_error());
récupère les utilisateurs s'étant connectés la veille afin d'obtenir leur nombre.
Donc quand l'utilisateur se reconnectera, son "lastquerytime" sera de nouveau mis à jour et ainsi la valeur des "connectés d'hier" sera faussée.

N'y-a-t'il pas possiblité de récupérer le nombre de connectés d'aujourd'hui (à 23h59), de le stocker quelque part, et en faire la valeur des connectés d'hier à 0h00 ?

Posté : 08 août 2007, 13:33
par d0m
pourquoi pas une table des connections avec comme champs :
- le pseudo
- la date (timestamp) de connection

cette table contiendrait toutes les connections (pas seulement la dernière).

et si tu ne veux pas quelle prenne trop de place tu crée un script qui efface tous les jours à minuit les lignes qui sont antérieur à hier.

Posté : 08 août 2007, 13:37
par Ryle
Tant qu'à faire une nouvelle table, si tout ce qu'il souhaite c'est de connaitre le nombre de visiteurs, autant en faire une juste avec la date et le nombre de connexion du jour, que tu incrémentes à chaque fois que quelqu'un se connecte... :)