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 :

Comparaison de dates


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur du Dimanche
    Inscrit en
    Juillet 2014
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur du Dimanche
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 147
    Par défaut Comparaison de dates
    Bonjour ,


    Je rencontre un petit souci c'est pourquoi je me tourne vers la communauté.

    Je vous explique j'ai une colonne avec une date de formation.
    Ce que je souhaite faire c'est afficher 3 couleurs lorsque la date de formation dépasse un certain délais.

    Si date de de formation < 5 ans en rouge
    si date de formation < 3 ans en orange et 5 ans
    sinon date de formation en noir

    j'espère que vous comprendrez ma vision de la chose.
    Le problème est que si je choisis une date < à 5 ans il me l'affiche en orange et j'ai l'impression que la condition s'exécute jusqu'à la couleur orange.
    En tout cas vos conseils sont les bienvenus , merci.

    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
    	$date=$row["etat2"];                                            //date fixe formation
     
    					$today = date("d-m-Y");                           //date du jour
    					$today2 = date("d/m/Y", strtotime('+3 years'));     //date du jour +3 ans
    					$today3 = date("d/m/Y", strtotime('+5 years'));     //date du jour +5 ans
     
     
    					if ($date<$today2){								// si date date formation < 3 ans
    							$color="orange";
     
    					}
     
     
     
    						else if ($date<$today3)                      //  si date formation < 5 ans
    						{
     
    						     $color="red";
    					}				 
     
     
    						else
    							{
     
    								$color="black";
    							}

  2. #2
    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
    Salut,

    quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $color = 'black';
    $today = new DateTimeImmutable();
    if ($date <= $today->modify('+3 years')) {
        $color = 'orange';
    } elseif ($date <= $today->modify('+5 years')) {
        $color = 'red';
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur du Dimanche
    Inscrit en
    Juillet 2014
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur du Dimanche
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 147
    Par défaut
    Bonjour RawSrc,

    Effectivement c'est plus propre votre manière de faire.
    Par contre , maintenant , il me met les dates , je veux dire , toutes les dates de la colonne en orange pour 2014 elles devraient être rouge , 2020 en orange, 2026 en noir.
    Est ce que j'ai oublié quelque chose .
    MERCI pour vos conseils ...

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?php
    include('database_connection.php');
    header("Content-type: text/html; charset=utf-8" );
     
    setlocale (LC_TIME, 'fr_FR.utf8','fra'); 
    echo (strftime("%A %d %B"));
    echo "\n" ;
     
    	//$today 	=(strftime("%A %d %B"));
    //	*, DATE_FORMAT(etat, '%d/%m/%Y') AS 'etat'
    $query = "SELECT *,DATE_FORMAT(etat, '%d/%m/%Y') AS 'etat',DATE_FORMAT(etat2, '%d/%m/%Y') AS 'etat2' FROM tbl_image ORDER BY etat2 ASC";
    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    $number_of_rows = $statement->rowCount();
    $output = '';
    $output .= '
    
     
    
     <table class="table table-bordered table-striped">
      <tr>
       <th>Num</th>
       <th>Document</th>
       <th>Description</th>
       <th>Date formation</th>
       <th>Date limite</th>
       <th>NOM Pr&eacute;nom</th>
       <th>Edit</th>
       <th>Supprimer</th>
      </tr>
    ';
     
    if($number_of_rows > 0)
    {
     $count = 0;
     foreach($result as $row)
     {
    	$date=$row["etat2"];                                            //date fixe formation
     
    					$color = 'black';
     
    					$today = new DateTimeImmutable("now");
     
     
    						if ($date <= $today->modify('+3 years')) {
     
    							$color = 'orange';
    						}
     
     
    							elseif ($date <= $today->modify('+5 years')) {
     
    								$color = 'red';
    						}	
     
     
      $count ++; 
      $output .= '
      <tr>
       <td>'.$count.'</td>
       <td><!--<img src="files/'.$row["image_name"].'" class="img-thumbnail" width="100" height="100" />-->
       
       
    <a href="files/'.$row["image_name"].'"" target="_blank">voir</a>
       
       </td>
       <td>'.$row["image_name"].'</td>
       
       <td>'.$row["etat"].'</td> 
    
       <td><font color="'.$color.'">'.$row["etat2"].'</td>
    	
       <td>'.$row["image_description"].'</td>
       <td><button type="button" class="btn btn-warning btn-xs edit" id="'.$row["image_id"].'">Edit</button></td>
       <td><button type="button" class="btn btn-danger btn-xs delete" id="'.$row["image_id"].'" data-image_name="'.$row["image_name"].'">Supprimer</button></td>
      </tr>
      ';
     }
    }
    else
    {
     $output .= '
      <tr>
       <td colspan="6" align="center">No Data Found</td>
      </tr>
     ';
    }
    $output .= '</table>';
    echo $output;
     
     
    ?>

  4. #4
    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
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = DateTime::createFromFormat('d/m/Y', $row['etat2']);

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur du Dimanche
    Inscrit en
    Juillet 2014
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur du Dimanche
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 147
    Par défaut
    Bon appétit ... j'ai copier ce bout de code au début comme ceci
    J'espère que je me suis pas trompé du coup j'ai :

    2014 en orange (<=à 5 ans il devrait être rouge n'est-ce pas)
    2020 orange OK
    2024 en rouge (>=à 5 ans il devrait être noir n'est-ce pas)
    Est-ce que ça peut pas venir du fichier upload.php par hasard ?
    Merci.


    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
    $date = DateTime::createFromFormat('d/m/Y', $row['etat2']);                                           //date fixe formation
     
    					$color = 'black';
     
    					$today = new DateTimeImmutable("now");
     
     
    						if ($date <= $today->modify('+3 years')) {
     
    							$color = 'orange';
    						}
     
     
    							elseif ($date <= $today->modify('+5 years')) {
     
    								$color = 'red';
     
    						}


    upload.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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    //upload.php
    include('database_connection.php');
     
    if(count($_FILES["file"]["name"]) > 0)
    {
     //$output = '';
     sleep(3);
     for($count=0; $count<count($_FILES["file"]["name"]); $count++)
     {
      $file_name = $_FILES["file"]["name"][$count];
      $tmp_name = $_FILES["file"]['tmp_name'][$count];
      $file_array = explode(".", $file_name);
      $file_extension = end($file_array);
      if(file_already_uploaded($file_name, $connect))
      {
       $file_name = $file_array[0] . '-'. rand() . '.' . $file_extension;
      }
      $location = 'files/' . $file_name;
      if(move_uploaded_file($tmp_name, $location))
      {
       $query = "
       INSERT INTO tbl_image (image_name, etat, etat2, image_description) 
       VALUES ('".$file_name."','" . date("Y/m/d") . "','" . date("Y/m/d", strtotime('+5 years')) . "','')
       ";
       $statement = $connect->prepare($query);
       $statement->execute();
      }
     }
    }
     
    function file_already_uploaded($file_name, $connect)
    {
     
     $query = "SELECT * FROM tbl_image WHERE image_name = '".$file_name."'";
     $statement = $connect->prepare($query);
     $statement->execute();
     $number_of_rows = $statement->rowCount();
     if($number_of_rows > 0)
     {
      return true;
     }
     else
     {
      return false;
     }
    }
     
    ?>

  6. #6
    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
    Euh, faut bien expliquer, c'est un poil plus compliqué que ça... :
    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
    $date  = DateTimeImmutable::createFromFormat('d/m/Y', $row['etat2']);
    $today = new DateTimeImmutable();
     
    $color = 'black';
    if ($date < $today) {
        if ($date >= $today->modify('-3 years')) {
            $color = 'orange';
        } elseif ($date >= $today->modify('-5 years')) {
            $color = 'red';
        }
    } elseif ($date > $today) {
        if ($date <= $today->modify('+3 years')) {
            $color = 'orange';
        } elseif ($date <= $today->modify('+5 years')) {
            $color = 'red';
        }
    }

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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