IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Afficher les 24 dernières heures depuis l'heure actuelle [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Saturos2k4
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut Afficher les 24 dernières heures depuis l'heure actuelle
    Bonjour,

    je cherche à générer des résultats d'une table sur les 24 dernières heures, à partir de l'heure actuelle, voici la table en question :



    Chaque ligne ci-dessus correspond à un signalement.

    Ma requête SQL actuelle est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT date_format(`signalements`.`date_submit`,"%d/%m à %Hh00") as `date_submit`,count(`signalements`.`id`) as `id` FROM `signalements` WHERE date_submit > DATE_SUB(NOW(), INTERVAL 72 HOUR) GROUP BY hour(`signalements`.`date_submit`),date_format(`signalements`.`date_submit`,"%d/%m à %Hh00") ORDER BY date_submit ASC
    Ce qui sort avec un array php : (entre parenthèse le nombre de signalements, par exemple)

    05/09 à 10h00 (1)
    05/09 à 17h00 (2)
    05/09 à 18h00 (1)
    06/09 à 08h00 (4)
    06/09 à 09h00 (1)
    06/09 à 10h00 (1)

    Je voudrais arriver à ce résultat :



    Donc un résultat sous cette forme (on compte le nombre de signalements chaque heure entre parenthèses) :

    05/09 à 14h00 (1)
    05/09 à 15h00 (4)
    05/09 à 16h00 (1)
    05/09 à 17h00 (3)
    05/09 à 18h00 (1)
    05/09 à 19h00 (2)
    04/09 à 20h00 (3)
    05/09 à 21h00 (3)
    05/09 à 22h00 (1)
    05/09 à 23h00 (2)
    06/09 à 00h00 (1)
    06/09 à 01h00 (0)
    06/09 à 02h00 (2)
    06/09 à 03h00 (1)
    06/09 à 04h00 (4)
    06/09 à 05h00 (1)
    06/09 à 06h00 (1)
    06/09 à 07h00 (1)
    06/09 à 08h00 (1)
    06/09 à 09h00 (1)
    06/09 à 10h00 (0)
    06/09 à 11h00 (4)
    06/09 à 12h00 (0)
    06/09 à 13h00 (2)
    06/09 à 14h00 (1)

    Même si le comptage des signalements est à 0 (0), je veux quand même pouvoir afficher cette valeur avec l'heure correspondante comme ci-dessus.

    Merci d'avance pour votre aide,

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 680
    Par défaut
    j'ai essayé votre requête avec un petit jeu de test et j'ai récupéré les bonnes sommes.
    essayez de retirez le 1er bout "hour..." dans le "group by", ça ne devrait pas être nécessaire puisqu'il y a déjà "date_format" qui suffit.

  3. #3
    Membre averti Avatar de Saturos2k4
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut
    Merci pour votre réponse, j'ai retiré
    hour(`signalements`.`date_submit`),
    et cela affiche :

    04/09 à 06h00 (1)
    04/09 à 07h00 (4)
    04/09 à 08h00 (1)
    04/09 à 09h00 (3)
    04/09 à 13h00 (1)
    04/09 à 16h00 (2)
    04/09 à 17h00 (3)
    05/09 à 06h00 (3)
    05/09 à 07h00 (1)
    05/09 à 08h00 (2)
    05/09 à 09h00 (1)
    05/09 à 10h00 (1)
    05/09 à 17h00 (2)
    05/09 à 18h00 (1)
    06/09 à 08h00 (4)
    06/09 à 09h00 (1)
    06/09 à 10h00 (1)
    06/09 à 15h00 (1)

    Mais cela ne marche pas, il me faudrait les 24 dernières heures depuis l'heure actuelle :

    05/09 à 15h00 (0)
    05/09 à 16h00 (1)
    05/09 à 17h00 (3)
    05/09 à 18h00 (1)
    05/09 à 19h00 (2)
    04/09 à 20h00 (3)
    05/09 à 21h00 (3)
    05/09 à 22h00 (1)
    05/09 à 23h00 (2)
    06/09 à 00h00 (1)
    06/09 à 01h00 (0)
    06/09 à 02h00 (2)
    06/09 à 03h00 (1)
    06/09 à 04h00 (4)
    06/09 à 05h00 (1)
    06/09 à 06h00 (1)
    06/09 à 07h00 (1)
    06/09 à 08h00 (1)
    06/09 à 09h00 (1)
    06/09 à 10h00 (0)
    06/09 à 11h00 (4)
    06/09 à 12h00 (0)
    06/09 à 13h00 (2)
    06/09 à 14h00 (1)
    06/09 à 15h00 (3)
    06/09 à 15h00 (1)

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 680
    Par défaut
    pour les heures à 0 ce n'est pas un souci, je pense que c'est plus simple à faire en php.

    par contre les valeurs ont encore un problème, puisque vous avez par exemple 4 à 08 h 00 et vous dites que ça devrait être 1 ? ou alors c'est normal et ce sont juste des données de test ?

  5. #5
    Membre averti Avatar de Saturos2k4
    Homme Profil pro
    Analyse système
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut
    D'accord merci, je ne vois pas comment faire en php.

    Concernant les valeurs elles sont choisies au hasard, c'est juste pour illustrer l'exemple.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 680
    Par défaut
    vous pouvez faire comme cela pour avoir un tableau avec les zéros :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    // tableau des données récupérées à partir de la requête mysql
    $donnees_mysql = [
    	"07/09 à 10 h 00" => 45,
    	"07/09 à 21 h 00" => 6,
    	"07/09 à 22 h 00" => 38,
    	"08/09 à 10 h 00" => 27,
    	"08/09 à 12 h 00" => 85,
    	"08/09 à 19 h 00" => 4,
    	"08/09 à 20 h 00" => 45,
    ];
     
     
     
    $maintenant = time();
    $il_y_a_24_heures = strtotime("-1 day", $maintenant);
     
    $parcours = $il_y_a_24_heures;
     
     
    $resultats = [];
     
    while ($parcours < $maintenant) {
     
    	$date_heure = date("d/m à H \h 00", $parcours);
     
    	$resultats[$date_heure] = 0;
     
    	// s'il y a une donnée pour cette heure
    	if (isset($donnees_mysql[$date_heure])) {
    		$resultats[$date_heure] = $donnees_mysql[$date_heure];
    	}
     
     
    	// prochaine heure
    	$parcours = strtotime("+1 hour", $parcours);
     
    }
     
     
    // ici $resultats contient toutes les heures avec des 0 quand il n'y a pas de données

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Code prend 1 heure pour afficher les resultats
    Par Mateos_hiss dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 17/06/2016, 10h50
  2. [MySQL] Afficher les tickets superieurs à 4 heures
    Par maxdata dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 30/05/2013, 11h38
  3. php afficher les heures avec minutes qui reste..
    Par xunil2003 dans le forum Langage
    Réponses: 1
    Dernier message: 21/07/2012, 21h51
  4. Afficher les milièmes dans un champs Date Heure
    Par zooffy dans le forum ASP.NET
    Réponses: 8
    Dernier message: 27/07/2007, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo