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

  1. #1
    Nouveau membre du Club Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    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 : 60
    Points : 39
    Points
    39

    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 ?
    “L’homme est la mesure de toute chose” Protagoras

    Pensez à mettre !

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 484
    Points : 14 729
    Points
    14 729

    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
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    5 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 5 256
    Points : 13 578
    Points
    13 578
    Billets dans le blog
    8

    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 ``
    # Dans la Création, tout est permis mais tout n'est pas utile...

  4. #4
    Nouveau membre du Club Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    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 : 60
    Points : 39
    Points
    39

    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 : 31
Taille : 9,2 Ko


    BDD ( si ça peut aider ^^') :
    Nom : ergregergerger.PNG
Affichages : 31
Taille : 105,5 Ko
    “L’homme est la mesure de toute chose” Protagoras

    Pensez à mettre !

  5. #5
    Nouveau membre du Club Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    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 : 60
    Points : 39
    Points
    39

    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
    “L’homme est la mesure de toute chose” Protagoras

    Pensez à mettre !

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 484
    Points : 14 729
    Points
    14 729

    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.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club Avatar de theocbr
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    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 : 60
    Points : 39
    Points
    39

    Par défaut

    En plus de ne rien comprendre à cette méthode, elle ne fonctionne pas :c

    Nom : oooooooooo.PNG
Affichages : 32
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';
     
    ?>
    “L’homme est la mesure de toute chose” Protagoras

    Pensez à mettre !

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 484
    Points : 14 729
    Points
    14 729

    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
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : mars 2019
    Messages : 25
    Points : 59
    Points
    59

    Par défaut

    +1 en général quand tu écris plusieurs fois le même fonctionnement de code tu devrais essayer de le factoriser, quitte à l'écrire une première fois comme tu le voulais et ensuite le réécrire, tu gagneras en maintenabilite

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