Comparer deux dates en PHP!! SOS

Fermé
zayker7 Messages postés 3 Date d'inscription vendredi 24 novembre 2006 Statut Membre Dernière intervention 15 septembre 2008 - 24 nov. 2006 à 02:43
 togoenvogue.com - 24 nov. 2010 à 13:53
Bonjour Tout le monde, je vous expose mon problème:
voila je suis entrain de devolopper un outil de gestion de congés, et là je dois comparer la date d'aujourd'ui ($today) avec la date de fin d'un congé pris ($date_fin) ,
si ($date_fin) > ($today) donc le congé n'est pas encore terminé ou n'est pas encore pris c'est à dire que j'ai le moyen de l'annuler, et dans le cas contraire :
si ($date_fin) < ($today) donc le congé est dèja pris c'est à dire que je n'aurais pas le moyen pour l'annuler . j'espere que vous avez compris mon probleme jusqu'à maintenant.

$today= date("d-m-Y");
if (strtotime($date_fin) < strtotime($daba))
$sql_motif_refus="déja pris";

quand j'utilise la fonction date(d-m-Y) il calcule juste le jour "d" par exemple si $date_fin = 20-11-2006 et $today = 07-11-2006 il me renvoie que le congé est deja pris alors qu'on est encore au 07 novembre et la date d'echeance est 20 novembre, enfin de compte il ne prend pas en charge le mois et l'année!!
je demande de l'aide s'il vous plait!! j'ai tout épuisé et sans resolution!!
Merci d'avance...
A voir également:

3 réponses

il faut plutôt regarder ici:
La solution pour comparer deux dates en php:
https://blog.galerie-cesar.com/php-comparer-les-dates-astuce-tres-pratique/­tres-pratique/
9
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
24 nov. 2006 à 07:15
Salut,

regarde ici opérations sur les dates

lami20j
4
togoenvogue.com
24 nov. 2010 à 13:53
Bonjour cher ami,

Je suis John du Togo.

Je ne sais pas si j'ai exactement compris ton problème, mais je tiens partager ceci avec toi et les autres.

Après plusieurs essais et recherches personnelles, ce que je te conseillerais d'abord, c'est de ne pas enregistrer les dates dans la base sous un format français (JJ-MM-AAAA), mais plutôt utiliser le format anglais (AAAA-MM-AA). Que le type de champ ici soit DATE ou VARCHAR, c'est pas un problème a priori.

Maintenant, moi je prends ton problème de congé sous un autre angle.

Je mets le champs [date_holiday] comme champs VARCHAR NULL

Donc pour savoir ceux qui n'ont pas encore pris leur congé, c'est simple. Je fais :

SELECT * FROM [table_employes] WHERE [date_holiday] = NULL


Maintenant je connais les gens qui n'ont pas pris leur congé.

Alors, si je veux mettre un personnel en congé, je fais :

UPDATE [table_employes] SET [date_holiday]='$date_depart' WHERE id_employe='x'


***** PRÉCISIONS
$date_depart : c'est un ensemble de champs (JJ-MM-AAA) concaténés
Donc $date_depart = $_POST['aaaa']. "-" . $_POST['mm']. "-" . $_POST['jj'];
Au finish, ma variable date prendra la forme 2010-11-11

2. Le id_employe='x' c'est soit l'ID que tu récupère dans le formulaire ou par la methode $_GET

Voila nous avons donnée congé a Nicole le 2010-11-11 (11 nov. 2010)

Ensuite, pour trouver le nombre de jours épuisés par Nicole pour ses congés qui vont durer 21 jours au total par exemple, je chercherai la différence entre la date de son congé (2010-11-11 soit 11 novembre 2010) et aujourd'hui (2010-11-24 soit 24 novembre 2010). Voici une partie du bout de code :

<?php
$aujourdhui = date("Y-m-d"); // donc format (AAAA-MM-JJ),
                                              // ce qui donnera 2010-11-24
$date_depart = ['date_holidy']; // de la base
$nbr_jours = (strtotime($date_depart) - strtotime($aujourdhui)) / (60 * 60 * 24);


// echo $nbr_jours // ceci donnerait 13
// donc théoriquement, Nicole a épuisé 13 jours des 21, et il lui resterait 8 jours.

if($nbr_jours < 21) {

echo "Bon congé a toi Nicole ! Ramène-nous des Chokola !!!";

}elseif($nbr_jours >= 21){

echo "Cocou Nicole, comment ont été tes congés ? Bonne reprise !";

}
?>


Voila, j'espère que ce code peut t'aider ou aider quelqu'un dans la manipulation des dates. Mais avant de finir, supposons que tu veuilles afficher la date de départ de Nicole (2010-11-11) sous un format français (11-11-2010).

Voici ce qu'il faut faire :
$date_depart = ['date_holidy']; // de la base
 echo date("d-m-Y",strtotime("$date_depart"));


PS : Je n'ai pas eu le temps de tester ce code, je l'ai écrit du droit ici, mais ca devra marcher. Si besoin de plus d'aide ou précision, envoi moi un mail : john@togoenvogue.com
3