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

  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';
        }
    }

  7. #7
    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
    Merci
    ça fonctionne mais j'ai passé trop de temps à rougir mes yeux sur la chose ; un moment de répit, est le bienvenu ...
    Je regarderai ce soir à tête reposé au calme parce que j'y comprends plus rien à force de regarder ...

  8. #8
    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
    Bonne sieste

  9. #9
    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
    Ça va, c'est cool , j'ai bidouillé le code 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
    27
    28
    29
    30
    31
     
    if($number_of_rows > 0)
    {
     $count = 0;
     foreach($result as $row)
     {
     
     $date  = DateTimeImmutable::createFromFormat('d/m/Y', $row['etat2']);
    $today = new DateTimeImmutable();
     
    $color = 'red';
    if ($date < $today) {
        if ($date >= $today->modify('-3 years')) {
            $color = 'orange';
        } elseif ($date >= $today->modify('-5 years')) {
            $color = 'red';
    		} 
     
     
        }
     
    if ($date > $today) {
        if ($date <= $today->modify('+3 years')) {
            $color = 'orange';
        } elseif ($date <= $today->modify('+5 years,+6 years,+7 years,+8 years,+9 years,+10 years,+11 years,+12 years,+13 years,+14 years,+15 years,+16 years,+17 years,+18 years,+19 years,+20 years,+21 years,+22 years,+23 years')) {
            $color = 'black';
        }
     
     
     
    }

    par contre il ne m'affiche plus dans l'ordre décroissant quand je modifie des dates dans update il repecte les couleurs mais n'affiche plus dans le bon ordre malgré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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";

  10. #10
    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
    ça pique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($date <= $today->modify('+5 years,+6 years,+7 years,+8 years,+9 years,+10 years,+11 years,+12 years,+13 years,+14 years,+15 years,+16 years,+17 years,+18 years,+19 years,+20 years,+21 years,+22 years,+23 years'))
    ensuite il vaut mieux éviter d'utiliser comme alias les noms des colonnes existantes quand ces dernières ont été transformées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT *, DATE_FORMAT(etat, '%d/%m/%Y') AS 'date_etat', DATE_FORMAT(etat2, '%d/%m/%Y') AS 'date_etat2' FROM tbl_image ORDER BY etat2 ASC";
    enfin tu dis
    l'ordre décroissant
    alors que ta requête est Y'a pas comme une incohérence ?

  11. #11
    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
    En effet c'est DESC je viens de me réveiller ...
    Je vais chercher ...
    Merci pour tes observations .

  12. #12
    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
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY etat DESC, etat2 DESC
    C'est bon c'est déjà un bon début le reste va suivre

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