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 :

Requête sur un mois complet [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 22
    Points
    22
    Par défaut Requête sur un mois complet
    Bonjour,
    je souhaite récupérer les dates sur 30 jours dans la base mysql pour les mettre dans un graph
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select DISTINCT date as nb from TRI_LOG where date=CURRENT_DATE()-$i
    je récupère bien les dates du 03/12/2013 jusqu'au 01/12/2013, par contre il me récupère rien sur le mois précédent.
    J’ai essayé la requête directement dans la base en remplacent le $i par 10 et je récupère bien une date du mois précédent.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select DISTINCT date as nb from TRI_LOG where date=CURRENT_DATE()-10 and instance='11'

    voici le code qui pose problème

    Code : 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
     
    // variable pour choisir le nombre de jours pour le graph
    $j = "30";
     
    //déclaration du tableau
    $date = array();
     
    // boucle pour récupérer x jours de la variable $j  de la requete mysql
    for ($i = 1; $i <= $j; $i++) 
    {
     
    // récupère les données de l'axe X de la base TRI_LOG pour la date
    $sql_requete = "select DISTINCT date as nb from TRI_LOG where date=CURRENT_DATE()-$i and instance='11'";
    $mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
    // mysql_select_db   Sélectionne une base de données MySQL
    @mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
    // mysql_query   Envoie une requête à un serveur MySQL
    $result = @mysql_query($sql_requete, $mysqlCnx) or die('Pb de requête');
     
    // récupere la donnée et la met dans la variable date
    $row = mysql_fetch_assoc($result);
    array_push($date, $row['nb']);
    // affiche la variable
    print_r($date);
    sous php cela donne :
    Array ( [0] => 2013-12-03 [1] => 2013-12-02 [2] => 2013-12-01 [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] => )
    Il me récupère le mois en cours par contre pas le précédent.
    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ?

    Sinon cette boucle est inutile : récupére directement toutes tes valeurs ENTRE 1 et 30 jours.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    ok merci mais je suis obligé de laisser ce parametre qui change suivant la demande de l'utilisateur dans l'interface web.

    sinon pas d'idée sur la date ?

    cordialement

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    C'est pas parce qu'il y a ce paramètre utilisateur que tu dois faire une boucle.
    Pour grouper des résultat on utilise GROUP BY, pour chercher sur un interval de date il existe la commande INTERVAL que l'on peut utiliser dans DATE_SUB ou DATE ADD par exemple.
    L'idée serait que tu revois ton code en utilisant les possibilités des fonctions décrites dans cette page.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    merci pour ta réponse.

    j'ai essayer ton code .

    par contre pour me recentré sur ma question initiale je ne comprend pas pourquoi la commande

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select erreur_error as nb from SERVEUR_LOG where date=CURRENT_DATE()-10 and instance='11'

    ne veut pas recupérer la date du mois novembre, car la date du mois en cours est remontées , si je mets mais dès que je mets un chiffre pour remonté une date du mois précédent j'ai une remonté NULL

    amicalement

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme on te l'a dit, ta méthode n'est pas bonne du tout :
    Une seule requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT erreur_error AS nb FROM SERVEUR_LOG
    WHERE `date` >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH))

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    merci c'est bon maintenant , cordialement

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

Discussions similaires

  1. Requêtes sur le mois précédent
    Par schmitx dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/05/2014, 22h49
  2. [XL-2007] comparer les données reçues sur un mois et completer les données manquantes par une macro.
    Par wisemanvsfatboy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/11/2010, 17h16
  3. Requête sur 12 mois glissant
    Par sandrasemise dans le forum Webi
    Réponses: 5
    Dernier message: 17/08/2010, 15h42
  4. Requête sur un mois.
    Par DGuillaume dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/10/2009, 17h42
  5. Filtrer le dates sur le mois en cours dans la requête
    Par isabelle b dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 12/12/2008, 01h03

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