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

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 : Récuperer valeur d'une table à une heure précise ?

par Ryle » 08 août 2007, 13:37

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... :)

par d0m » 08 août 2007, 13:33

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.

par Tyrese » 08 août 2007, 13:24

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 ?

par Tyrese » 06 août 2007, 16:50

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

par d0m » 06 août 2007, 16:32

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

par Tyrese » 06 août 2007, 16:29

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.

par d0m » 06 août 2007, 16:28

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()); 

par Tyrese » 06 août 2007, 16:23

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' ")

par Ryle » 06 août 2007, 13:54

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 :)

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

par Tyrese » 06 août 2007, 13:16

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 ?