Afficher la statistique la plus recente

Eléphant du PHP | 111 Messages

22 août 2013, 01:06

Bonjour (ou bonsoir :P),

je créer un système de statistiques.

Dans ma DB, j'ai le Dateline pour définir le temps qui s'actualise alà chaque inscription dans la db, et une table numusers pour définir le nombre d'inscrit.

j'ai ajouter ce code :


Nombre d'inscrit :
<?php

 $sql='SELECT * FROM stars order by dateline';

 $result=mysql_query($sql);

 if(!$result) {
 die('erreur dans la requête : '.mysql_error());
 }

 while ($row=mysql_fetch_array($result,MYSQL_ASSOC)) {
 echo $row['numusers'];
 }
 ?>
mais sa m'affiche :

nombre d'inscris : 01234,il m'affiche les 4 tables donc comment faire pour afficher la table la plus récente ?

Merci de votre aide :)
Modifié en dernier par moogli le 22 août 2013, 09:43, modifié 1 fois.
Raison : bbcode colorisation de syntaxe php

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 août 2013, 10:01

salut,

le comportement que tu décris correspondant bien a ton code :)

pourquoi ?
parce que tu affiche la colonne numusers de la table stars pour chaque ligne (ou tuple ou n-uplet) de la table stars.
de plus la requête est ordonnée par la colonne dateline par ordre croissant (cas par défaut lorsque l'on indique pas l'ordre souhaité).

je suppose que le numusers est une clef primaire auto incrémenté donc l'affichage est normal.

pour faire ce que veux il y a deux solutions :
La solution mysql en utilisant la clause limit (spécifique à mysql)
[mysql]
SELECT * FROM stars order by dateline desc limit 1
[/mysql]
qui ne retournera qu'un seul tuple, et dans notre cas le dernier.

Une solution plus normalisée (utilisable sur tout SGBD) peux être, par exemple :
SELECT * FROM stars where dateline = (select max(dateline) from stars)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 111 Messages

22 août 2013, 11:11

Merci de votre, je test ça et je vous dit si sa,marche ;)