[RESOLU] Vérifier le nombre d'enregistrements

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 : [RESOLU] Vérifier le nombre d'enregistrements

Re: Vérifier le nombre d'enregistrements

par Landéda » 04 juin 2014, 18:34

Merci à tous
On va déclarer le sujet résolu et on reviendra quand on aura un peu travaillé.
Jean

Re: Vérifier le nombre d'enregistrements

par sirakawa » 03 juin 2014, 19:28

Il faudrait mettre ces valeurs en SESSION,me semble-t-il, à vue de gadget (pour les jeunes à vue de PIF gadget: t=capillotracté, j'en conviens, mais si on se fait des cheveux pour ça, que mettra-t-on dans la soupe?) :?

Re: Vérifier le nombre d'enregistrements

par Landéda » 03 juin 2014, 16:54

Vous êtes sympas mais je suis vraiment trop nul
J'ai essayé BETWEEN 1401684000 AND 1401770400, effectivement avec des nombres ça marche, ça donne 289 au lieu de 288 pour les raisons que tu donnes plus bas (<= et non <) pas très grave .
Ce que je cherchais (mais est ce possible ? ) c'étaitque mon bout de code :
$reponse = $bdd->query('SELECT count(*) AS nombre FROM data WHERE tstamp > ????????? AND tstamp <= ????????? ');
$donnees = $reponse->fetch();

récupère "de lui même" les valeurs numériques de halte ou $top ou $start
du SELECT précédent:
$reponse= $bdd->query('SELECT max(tstamp) AS halte FROM data');
$donnees = $reponse->fetch();
$stop = $donnees['halte'] ;
$start = $stop -86400;

et me renvoie alors le nombre cherché
Jean

Re: Vérifier le nombre d'enregistrements

par moogli » 03 juin 2014, 15:45

avant de tester avec php, commence par tester ta requête avec un client sql.
cela va t'éviter le problème d'être certain du fonctionnement de ton code (qui semble correcte) ainsi que d'aller un poil plus vite ;)

par heidiSql est plutôt bien fait.

donc en SQL ce que tu as fait de fonctionnel peux être écrit de cette façon avec between
[mysql]
SELECT COUNT(*) AS nombre
FROM DATA
WHERE tstamp between 1401684000 and 1401770400[/mysql]
avec le fait que c'est <= et non <

maintenant il est aussi possible d'utiliser les fonctions de date de mysql avec notamment les fonctions indiquées plus haut.

pour avoir le nombre de lignes sur la journée tu peux faire ainsi.
[mysql]
SELECT COUNT(*) AS nombre
FROM DATA
WHERE CAST(FROM_UNIXTIME(tstamp) AS DATE)= CURDATE();
[/mysql]

la tu compte le nombre de ligne pour aujourd'hui.

ensuite avec les fonctions de date tu peux joueur sur le second paramètre, voir simple le fournir directement. Dans ce cas tu utilisera aussi la fonction str_to_date pour te faciliter la vie ;)


@+

Re: Vérifier le nombre d'enregistrements

par Landéda » 03 juin 2014, 13:41

Merci de vous intéresser à mes problèmes .
Mais je répète je suis vraiment novice, j'utilise un livre (si si) que voici, donc j'essaye de faire comme il dit, en particulier j'essaye d'utiliser PDO.
Dans leforum météo que je suis ils n'utilisent pas PDO et donc j'essaye d'adapter leur code à PDO, que je suis en train de découvrir .....
J’imaginais des trucs du genre:
Select count(*) from data
where tstamp > '$start'
and tstamp <= '$stop';
Mais voilà, j'ai pas su faire et j'ai pas trouvé .
Merci à tous
Jean

Re: Vérifier le nombre d'enregistrements

par sirakawa » 03 juin 2014, 10:03

Il doit falloir des multiples de 5...

Re: Vérifier le nombre d'enregistrements

par moogli » 03 juin 2014, 08:42

Salut

Cela dépend de ton champ mais si c'est un entier ou un timestamp tu peux utiliser unix_timestamp ainsi qu'un between et une somme pour le calcul ;)

S'il s'agit d'un champ de type date les fonctions de calcul sur les dates vont te permettre
D'extraire la date du jour et sur un égale dessus (plus utilisation de now()).

Le tout bien sur en SQL.

@+

Vérifier le nombre d'enregistrements

par Landéda » 03 juin 2014, 06:59

Bonjour à tous
Il faut vérifier le nombre d'enregistrements effectués sur une période de 24 H (86400 secondes) par une station météo, comme il y'a un enregistrement toutes les 5 minutes (300 secondes) on devrait trouver 86400/300 = 288 enregistrements , quand tout va bien .
La connexion à la base fonctionne .
Ceci marche aussi:
$reponse= $bdd->query('SELECT max(tstamp) AS halte FROM data');
$donnees = $reponse->fetch();
$stop = $donnees['halte'] ;
$start = $stop -86400;
$reponse->closeCursor();
Ensuite ça se gâte pour moi :
si par exemple on trouve un stop de 1401770400 et donc un start de 1401684000 le SELECT qui suit me donne bien 288 :
$reponse = $bdd->query('SELECT count(*) AS nombre FROM data WHERE tstamp >1401684000 AND tstamp <= 1401770400 ');
$donnees = $reponse->fetch();
echo 'combien:' .$donnees['nombre'].'<br/>';
$reponse->closeCursor();
Ma question est simple; que faut il écrire au lieu de 1401684000 et 1401770400 pour que ça marche ???
Merci
Jean