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 :

[PHP/SQL] Annee , Mois , Jour courant


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut [PHP/SQL] Annee , Mois , Jour courant
    Bonjour, j'ai une bdd qui contient des dates sous cette forme : 2019-06-27

    Voici mes variables :
    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
     
     
    $annee = date("Y");  // année courante
    $mois = date("m");  // mois courant
    $jourmois =date("j"); // jour du mois courant
    $premierjourmois = date('j',strtotime("first day of the month"));  // 1er jour du mois
     
    $deuxjourmois = $premierjourmois +1;
    $troisjourmois = $premierjourmois +2;
    $quatrejourmois = $premierjourmois +3;
    $cinqjourmois = $premierjourmois +4;
    $sixjourmois = $premierjourmois +5;
    $septjourmois = $premierjourmois +6;
    $huitjourmois = $premierjourmois +7;
    $neufjourmois = $premierjourmois +8;
    $dixjourmois = $premierjourmois +9;
    $onzejourmois = $premierjourmois +10;
    $douzejourmois = $premierjourmois +11;
    $treizejourmois = $premierjourmois +12;
    $quatorzejourmois = $premierjourmois +13;
    $quinzejourmois = $premierjourmois +14;
    $seizejourmois = $premierjourmois +15;
    $dixseptjourmois = $premierjourmois +16;
    $dixhuitjourmois = $premierjourmois +17;
    $dixneufjourmois = $premierjourmois +18;
    $vingtjourmois = $premierjourmois +19;
    $vingtunjourmois = $premierjourmois +20;
    $vingtdeuxjourmois = $premierjourmois +21;
    $vingttroisjourmois = $premierjourmois +22;
    $vingtquatrejourmois = $premierjourmois +23;
    $vingtcinqjourmois = $premierjourmois +24;
    $vingtsixjourmois = $premierjourmois +25;
    $vingtseptjourmois = $premierjourmois +26;
    $vingthuitjourmois = $premierjourmois +27;
    $vingtneufjourmois = $premierjourmois +28;
    $trentejourmois = $premierjourmois +29;
    $trenteunjourmois = $premierjourmois +30;

    Voici ma requête sql :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $sql_qry="SELECT SUM(CAJOUR) AS count FROM copilotedatas.pfd WHERE date='$annee $mois $premierjourmois'"; // Jour 1 du mois
    $resultCA = $mysqli->query($sql_qry);
    while($record = $resultCA->fetch_array()){
        $CAJour1 = $record['count'];
    }
    $resultCA->close();


    date='$annee $mois $premierjourmois' ne fonctionne pas , comment faire pour que ca fonctionne ?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Je sais pas bien à quoi servent toute ses variable incrémentées de 1 mais y'a plus intelligent ^^ ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dt = new DateTime('first day of this month');
    $sql_qry='SELECT SUM(CAJOUR) AS count FROM copilotedatas.pfd WHERE date="'.$dt->format('Y-m-d').'"'; // premier jour du mois en cours
    Ensuite si tu as besoin, tu modifie ta date.
    Ex pour ajouter un jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dt->add(new DateInterval('P1D'));
    $sql_qry='SELECT SUM(CAJOUR) AS count FROM copilotedatas.pfd WHERE date="'.$dt->format('Y-m-d').'"'; // deuxième jour

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    C'est clair que faire comme t'as fait, c'est direct l'échafaud
    Tu peux aussi tout extraire en une seule fois pour un mois et une année donnés et pour tous les jours de la période :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_qry = 'SELECT DAY(`date`) AS jour, SUM(CAJOUR) AS ca_jour FROM copilotedatas.pfd WHERE YEAR(`date`) = '.(int)$dt->format('Y').' AND MONTH(`date`) = '.(int)$dt->format('m').' GROUP BY jour ASC';
    N'oublie pas que le mot date est un mot réservé en SQL donc tu ne devrais jamais avoir une colonne avec cette appellation, si tu en as, tu dois obligatoirement utiliser les ``

  4. #4
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    N'oublie pas que le mot date est un mot réservé en SQL donc tu ne devrais jamais avoir une colonne avec cette appellation, si tu en as, tu dois obligatoirement utiliser les ``
    Merci pour l'info , mais c'est mon tuteur le créateur de la base de donnée , pas moi


    Tu peux aussi tout extraire en une seule fois pour un mois et une année donnés et pour tous les jours de la période :
    Non car je veux récupéré les données une/une pour ensuite les mettre dans un graphique , donc j'ai besoin de les avoirs chacuns dans une variable différentes

  5. #5
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par grunk Voir le message
    Je sais pas bien à quoi servent toute ses variable incrémentées de 1 mais y'a plus intelligent ^^
    c'est mon tuteur qui ma dis de faire comme ça , il est informaticien , pas moi, donc je l'écoute et j'applique ^^
    2
    $dt->add(new DateInterval('P1D'));
    $sql_qry='SELECT SUM(CAJOUR) AS count FROM copilotedatas.pfd WHERE date="'.$dt->format('Y-m-d').'"'; // deuxième jour
    je comprend pas vraiment ta méthode , pourrait tu me dire ce que signifie P1D ?Pour avoir le 3ème jour je fais P2D ? Désolé de paraitre un peu bête , mais je débute .
    Et puis comment je récupère les données sachant que tu les met dans la même variable ?

    J'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $dt = new DateTime('first day of this month');
    $sql_qry='SELECT SUM(CAJOUR) AS count FROM copilotedatas.pfd WHERE date="'.$dt->format('Y-m-d').'"'; // premier jour du mois en cours
     
     
     
    $dt->add(new DateInterval('P1D'));
    $sql_qry1='SELECT SUM(CAJOUR) AS count FROM copilotedatas.pfd WHERE date="'.$dt->format('Y-m-d').'"'; // deuxième jour
    J'obtient ça : Nom : slt.PNG
Affichages : 498
Taille : 9,2 Ko


    BDD ( si ça peut aider ^^') :
    Nom : ergregergerger.PNG
Affichages : 509
Taille : 105,5 Ko

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Citation Envoyé par theocbr Voir le message
    c'est mon tuteur qui ma dis de faire comme ça , il est informaticien , pas moi, donc je l'écoute et j'applique ^^
    FAut qu'il envisage une reconversion alors

    Citation Envoyé par theocbr Voir le message
    je comprend pas vraiment ta méthode , pourrait tu me dire ce que signifie P1D ?Pour avoir le 3ème jour je fais P2D ? Désolé de paraitre un peu bête , mais je débute .
    P1D est une représentation d'interval de temps , tu trouveras l'explication ici : https://www.php.net/manual/fr/datein....construct.php
    P = periode
    1 = valeur
    D = day

    Donc effectivement si tu veux ajouter 2 jours à la date courante tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dt->add(new DateInterval('P2D'));
    Citation Envoyé par theocbr Voir le message
    Et puis comment je récupère les données sachant que tu les met dans la même variable ?
    J'ai utiliser la même variable pour l'exemple , après tu t'organise comme tu veux en fonction de ce que tu as besoin de faire.

    Non car je veux récupéré les données une/une pour ensuite les mettre dans un graphique , donc j'ai besoin de les avoirs chacuns dans une variable différentes
    Tu as surtout besoin d'un tableau.
    La proposition de rawsrc est la bonne. Tu fait une requêtes qui ramène toutes les données , tu les récupères dans un tableau et ensuite tu itère sur ce tableau pour récupérer chaque valeur une à une.

    Donc tu utilise datetime pour trouver le premier jour et le dernier jour du mois. Tu utilise ces deux dates dans le where de ta requete (indice , il faut utiliser la clausse BETWEEN) et tu récupère un tablea ude tout tes résultats.

  7. #7
    Membre régulier Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 206
    Points : 90
    Points
    90
    Par défaut
    En plus de ne rien comprendre à cette méthode, elle ne fonctionne pas :c

    Nom : oooooooooo.PNG
Affichages : 476
Taille : 18,7 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // on se connecte à notre base
    $mysqli = new mysqli("ip", "***", "***", "copilotedatas");
    /* V곩fication de la connexion */
        if ($mysqli->connect_errno) {
        printf("ʣhec de la connexion : %s\n", $mysqli->connect_error);
        exit();
        }
    $sql_qry = 'SELECT DAY(`date`) AS jour, SUM(CAJOUR) AS ca_jour FROM copilotedatas.pfd WHERE YEAR(`date`) = '.(int)$dt->format('Y').' AND MONTH(`date`) = '.(int)$dt->format('m').' GROUP BY jour ASC';
     
    ?>

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Faut faire un effort quand même

    Tu utilise une variable $dt sans l'initialiser ...

    Il manque un $dt = new DateTime(); quelque part avant ta requête

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/12/2018, 19h42
  2. Date sous format ANNEE/SEMAINE en date ANNEE/MOIS/JOUR
    Par souhail72 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 13/09/2013, 08h51
  3. function getWeek(annee, mois, jours)
    Par David55 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/04/2011, 15h14
  4. Réponses: 7
    Dernier message: 15/02/2008, 12h36
  5. [T-SQL]nombre de jours ouvrable d'un mois
    Par soulsidibe dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/11/2006, 08h41

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