Rechercher : dans
Par :

Calcul d'une Date d'expiration php/sql

Dernière réponse le 13 jan 2009 à 17:13:34 nicusjam, le 13 jan 2009 à 15:25:27 
 Signaler ce message aux modérateurs

Bonjour,
voici mon probleme:
j'extraie une date de ma table ($date_depot_annonce) et la retourne sans soucis.
Le principe de ce que je cherche à faire :
A partir de cette date de depot l'annonce a une durée de vie de 3 mois, je souhaite afficher le nombre de jours restant et qu'au bout de trois mois (ou 90 jours) elle soit effacée.
avec un truc du style : if $date_depot_candidature>90jours {req delete;}else { echo"reste".$jours."jours avant delete";}
Et je galère avec timestamp et mktime. Pô facile !
Voici une portion de code, si ca vous parle je suis preneur de vos avis !!!!

//Ici la date sort au format sql et je la met au format francais avec fonction php "anbafey"
$date_depot_candidature=anbafey_date_format_francais(($ligne->date_depot_candidature));;												
							
$timestamp_now = mktime(0, 0, 0, date("d"), date("m"), date("Y"));
$now = date("d-m-Y", $timestamp_now);
$date1 = $date_depot_candidature; 
$date2 = $now;
							
$nbre_jours= abs($date1-$date2);
echo $nbre_jours."jours/90<br>"; 
//Extraction des données
print_r(list($jour1, $mois1, $annee1) = explode('-', $date1)."<br>"); 
print_r(list($jour2, $mois2, $annee2) = explode('-', $date2)."<br>");

//Calcul des timestamp
$timestamp1 = mktime(0,0,0,$mois1,$jour1,$annee1); 
$timestamp2 = mktime(0,0,0,$mois2,$jour2,$annee2); 
 echo abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jours


Merci d'avance pour vos reflexions !!! Nicus

Meilleures réponses pour « calcul d'une Date d'expiration php/sql » dans :
Vérifier le format d'une date en PHP Voir Il existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
Différence entre dates avec la fonction DATEDIF VoirLa fonction DATEDIF n'est pas documentée dans Excel, mais par contre sur CCM vous pouvez trouver les possibilités offertes. En voici un résumé.   La syntaxe =DATEDIF(date début;date fin;type de calcul) date début : doit être une valeur date...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...

1

nicusjam, le 13 jan 2009 à 15:56:18

Up !!
je comprend les dates c'est prise de tête mais personne pour donner une piste ? Merci !

Répondre à nicusjam

2

 nicusjam, le 13 jan 2009 à 17:13:34
  • +2

Bon apres brainstorming je vous livre un script qui, adapté; me donne le resultat escompté.

<?php
			
////debut
// recupere les informations de la date de depot -> 
// Ici la date est au format anglais en sortie sql et remise en format francais
// ---------------------------------------------------------- 
$id_candidature_aj=$ligne->id_candidature;
$date_depot_candidature=anbafey_date_format_francais(($ligne->date_depot_candidature));
//echo "date depot :".$date_depot_candidature."<br>";
//ici decoupage de la date 
list($jour1, $mois1, $annee1) = explode('-', $date_depot_candidature);

$mois_depot = $mois1; //recupere le mois en 1er car format date=date("m-d-Y")
$jours_depot = $jour1; //recupere le jour 
$annee_depot = $annee1; //recupere l annee  
// ---------------------------------------------------------- 
// fin recuperation des informations de la date donnée 
// recupere les informations de la date d'aujourdhui 
// ---------------------------------------------------------- 
$temps = time(); 
$date = getdate($temps); 
$mois_expiration = $date[mon]; //recupere le mois 
$jours_expiration = $date[mday]; //recupere le jour 
$annee_expiration = $date[year]; //recupere l annee 
// ---------------------------------------------------------- 
// fin recuperation des informations de la date d'aujourdhui 
$Date_depot = mktime( 0, 0, 0, $mois_depot, $jours_depot, $annee_depot ); // retourne le timestamp UNIX de la date 
$Date_expiration = mktime( 0, 0, 0, $mois_expiration, $jours_expiration, $annee_expiration ); // retourne le timestamp UNIX de la date 
// ---------------------------------------------------------- 
$ecartjour = ($Date_expiration - $Date_depot) / (60*60*24); // Calcul les secondes, minutes et heures donc lecart en jours entre les 2 dates 
// ---------------------------------------------------------- 
// print "Aujourdhui le: $jours_expiration - $mois_expiration - $annee_expiration "; // Retourne la date daujourdhui 
// print "<br>"; // retourne 1 retour a la ligne 
 if (abs(90-$ecartjour)<90){
print abs(90-$ecartjour) ." jours avant Delete";} 
else{$sql_candidature_del=mysql_query("DELETE FROM tb_accastillage_candidature WHERE id_candidature='$id_candidature_aj';") or die("*Requête impossible !");} // Retourne le nombre de jours entre les 2 dates 
//fin 

Répondre à nicusjam