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

Langage PHP Discussion :

Calcul de dates [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut Calcul de dates
    Bonjour,

    Je me tape la tête contre le mur depuis 2 heures, je ne trouve pas la solution, ça ne fonctionne pas.

    Je commence à avoir mal, donc je vous donne le bout de code concerné :
    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
    25
    26
    27
    28
     
    date_default_timezone_set('Europe/Paris');
     
    $reqCalculDate = $db->query("SELECT DATE_FORMAT(date_collecte_precedente, '%Y-%m-%d') as date_prec, "
            . "DATE_FORMAT(date_collecte_suivante, '%Y-%m-%d') as date_suiv FROM dechets");
    $dates = $reqCalculDate->fetch();
    $reqCalculDate->closeCursor();
     
    $datePrecedente = ($dates['date_prec']);
    $dateSuivante = $dates['date_suiv'];
     
    echo ($datePrecedente) . '  ' . ($dateSuivante) . ' ';
     
    $today = date('Y-m-d');
    echo ($today);
     
    if(($dateSuivante) < ($today)) {
        $varIntermediaire = $dateSuivante;
        $datePrecedente = $dateSuivante;
        $dateSuivante = $varIntermediaire("Y-m-d", strtime($varIntermediaire." + 14 days"));
        echo $dateSuivante;
     
     
        $reqMajDatesCollecte = $db->prepare("UPDATE dechets set date_collecte_precedente=?, "
                . "date_collecte_suivante = ?");
        $reqMajDatesCollecte->execute(array($datePrecedente, $dateSuivante));
        $reqMajDatesCollecte->closeCursor();
    }
    j'ai mis des 'echo' partout, mais pour autant je ne trouve pas comment faire.
    Je veux simplement qu'il compare la date_suiv de la date à la date d'aujourd'hui, et si elle est dépassée ajouter 14 jours.

    Mais j'ai des problèmes de format.

    Quelqu'un saurait comment faire ?

    D'avance merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dateSuivante = $varIntermediaire("Y-m-d", strtime($varIntermediaire." + 14 days"));
    Ici tu appelles une fonction dénommée $varIntermediaire(), je suppose que ce n'est pas voulu.

    Je veux simplement qu'il compare la date_suiv de la date à la date d'aujourd'hui, et si elle est dépassée ajouter 14 jours.
    Dans ce cas il faut que $dateSuivante soit supérieure à $today, et pas inférieure.

    Tu peux peut-être le faire directement avec MySQL...

    Passe toutes les date_collecte_suivante dépassées à J+14 de leur valeur :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE dechets
    SET date_collecte_suivante = date_collecte_suivante + INTERVAL 14 DAY
    WHERE date_collecte_suivante < NOW()

    https://dev.mysql.com/doc/refman/8.0...functions.html

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Il faut que tu nous en dises plus.
    La méthode de Séb ne passe pas pour deux raisons :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE dechets
    SET date_collecte_precedente= date_collecte_precedente + INTERVAL 14 DAY, date_collecte_suivante = date_collecte_suivante + INTERVAL 14 DAY
    WHERE date_collecte_suivante < NOW()

    1) Si on passe tous les jours sur ton script, bim, les dates changent tous les jours, et je suppose que ça n'est pas ce que tu veux.

    2) Il faut aussi que l'on sache si tu veux garder l'historique des collectes ou bien si tu n'as qu'une ligne, la dernière campagne en cours.

    Sauf erreur, et si tu ne conserves pas l'historique, ceci fonctionne-t-il, Séb ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE dechets
    SET date_collecte_precedente= date_collecte_precedente + INTERVAL 14 DAY, date_collecte_suivante = date_collecte_suivante + INTERVAL 14 DAY
    WHERE date_collecte_suivante < NOW() and DATEDIFF( date_collecte_suivante, now() ) >= 14;

  4. #4
    Membre régulier Avatar de RowanMayfair
    Femme Profil pro
    Développeuse Freelance
    Inscrit en
    Mars 2019
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeuse Freelance

    Informations forums :
    Inscription : Mars 2019
    Messages : 247
    Points : 89
    Points
    89
    Par défaut
    En fait ... j'ai la tête dans le guidon du coup je ne vois plus rien, et je fais n'importe quoi.

    La solution était toute simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    "UPDATE dechets set date_collecte_precedente=date_collecte_suivante, "
            . "date_collecte_suivante = date_collecte_suivante + 14 WHERE "
            . "date_collecte_suivante < now()"
    J'ai fait un test, ça fonctionne impec.

    Vraiment des fois je perds du temps à me prendre la tête pour rien du tout

    Merci (et désolée pour le dérangement bien inutile)

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

Discussions similaires

  1. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 12h13
  2. COUNT + Calcul de DATE
    Par cassi2 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/10/2004, 16h35
  3. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  4. SCRIPT CALCULANT LA DATE
    Par Redouane dans le forum ASP
    Réponses: 3
    Dernier message: 17/03/2004, 09h10
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

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