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 :

Sélection de jours entre deux dates pour un calendrier PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 2
    Par défaut Sélection de jours entre deux dates pour un calendrier PHP
    Bonjour,
    J’ai une DB MYSQL pour des évènements avec la date de début (date_in de type 2012-12-31) et la date de fin (date_out de type 2012-12-31)
    Je souhaiterais faire une requête qui me permet de récupérer dans un tableau (array) les jours ou il y a des évènements y compris ceux entre les deux dates
    Ex. si event a lieu du 2012-02-21 au 2012-02-25 et un autre du 2012-02-28 au 2012-02-29
    Mon array devrait contenir 21,22,23,24,25,28,29
    Est-il possible de faire ca simplement avec une requête ?

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 2
    Par défaut
    Pour ceux que ca interesse voici ma solution :
    J'ai trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while($data = mysql_fetch_assoc($req))
      {
          echo $data['event_id'].' : '.$data['event_date_in'].'-'.$data['event_date_out'].'<br>';
          $date_in=strtotime($data['event_date_in']);
          $date_out=strtotime($data['event_date_out']);
          for($i = $date_in; $i < $date_out; $i+=86400 )
          { echo date('Y-m-d', $i).'<br>'; }
        }

  3. #3
    Expert confirmé
    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
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Pour éviter de faire une cuisine du genre +86400, il est possible de procéder comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $start = DateTime::createFromFormat('Y-m-d', '2012-01-01');
    $end   = DateTime::createFromFormat('Y-m-d', '2012-12-31');
     
    $dates = array();
    $step  = new DateInterval('P1D');
     
    for($cur = $start; $cur < $end; $cur->add($step)) {
       $dates[] = $cur->format('Y-m-d');
    }

  4. #4
    Futur Membre du Club
    Homme Profil pro
    php
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : php
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut jour entre 2 date php
    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
    <?php
    $date1 = "01-05-2010"; //date fr le 01 mai 2010
    $date2 = "01-10-2010"; // date fr le 01 octobre 2010
    // On transforme les 2 dates en timestamp
    $date3 = strtotime($date1);
    $date4 = strtotime($date2);
     
    // On récupère la différence de timestamp entre les 2 précédents
    $nbJoursTimestamp = $date4 - $date3;
     
    // ** Pour convertir le timestamp (exprimé en secondes) en jours **
    // On sait que 1 heure = 60 secondes * 60 minutes et que 1 jour = 24 heures donc :
    $nbJours = $nbJoursTimestamp/86400; // 86 400 = 60*60*24
     
    echo "Nombre de jours : ".$nbJours;// dans mon exemple : Nombre de jours : 153
     
    ?>

  5. #5
    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
    Par défaut
    Surtout que l'assertion "1 jour = 24 heures" est fausse 2 fois par an avec les changements d'heure.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Script pour compter les jours entre deux dates
    Par bomonde dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 17/10/2012, 18h54
  2. fonction table pour récupérer la liste des jours entre deux dates
    Par elmoul7ak dans le forum Développement
    Réponses: 2
    Dernier message: 01/05/2010, 13h22
  3. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  4. nombre de jours entre deux date
    Par mzt.insat dans le forum Langage
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  5. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2005, 15h25

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