[PHP] enlever 15jours a une date
Résolu/Fermé
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
-
12 mars 2008 à 15:49
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 12 mars 2008 à 17:01
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 12 mars 2008 à 17:01
Bonjour,
Admettons une variable $date au format JJ/MM/AAAA contenant une date quelconque (pas celle d'aujourd'hui)
Comment faire pour lui enlever 15 jours ?
Merci à vous
Admettons une variable $date au format JJ/MM/AAAA contenant une date quelconque (pas celle d'aujourd'hui)
Comment faire pour lui enlever 15 jours ?
Merci à vous
A voir également:
- [PHP] enlever 15jours a une date
- Enlever pub youtube - Accueil - Streaming
- Comment enlever une page sur word - Guide
- Trouver une date de naissance gratuit ✓ - Forum Google Chrome
- Enlever mode sécurisé tv free ✓ - Forum Freebox
9 réponses
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
12 mars 2008 à 16:15
12 mars 2008 à 16:15
salut,
mais pourquoi travailler avec MySQL ?
tu veux du PHP, non ?
regarde les fonctions 'date()' et 'mktime()'.
en exemple le manuel donne :
mais pourquoi travailler avec MySQL ?
tu veux du PHP, non ?
regarde les fonctions 'date()' et 'mktime()'.
en exemple le manuel donne :
<?php $tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y")); $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y")); $nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1); ?>
lintowsca
Messages postés
25
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
21 mars 2008
5
12 mars 2008 à 16:19
12 mars 2008 à 16:19
désolé je l'avais pas testé, voilà ça sa marche:
$date= '2008-12-12'; // fallait le mettre entre quillement..
$NbJoursAEnlever = 15;
$Soustraction = mysql_query("SELECT SUBDATE('$date', INTERVAL $NbJoursAEnlever DAY)");
$Row = mysql_fetch_row($Soustraction);
echo $Row[0] ;
$date= '2008-12-12'; // fallait le mettre entre quillement..
$NbJoursAEnlever = 15;
$Soustraction = mysql_query("SELECT SUBDATE('$date', INTERVAL $NbJoursAEnlever DAY)");
$Row = mysql_fetch_row($Soustraction);
echo $Row[0] ;
lintowsca
Messages postés
25
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
21 mars 2008
5
12 mars 2008 à 15:52
12 mars 2008 à 15:52
via une requete mysql:
$Soustraction = mysql_query("SELECT SUBDATE('$DATE', INTERVAL $NbJoursAEnlever DAY) FROM table ")or die ("Problem".mysql_error());
$Soustraction = mysql_query("SELECT SUBDATE('$DATE', INTERVAL $NbJoursAEnlever DAY) FROM table ")or die ("Problem".mysql_error());
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
12 mars 2008 à 15:58
12 mars 2008 à 15:58
OK merci beaucoup parce que je ne connaissais pas du tout ce SUBDATE, mais je voudrais effectuer ce calcul sur une variable , non pas sur un champ d'une table.
lintowsca
Messages postés
25
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
21 mars 2008
5
12 mars 2008 à 16:03
12 mars 2008 à 16:03
ben? tu peux le faire quand même, mettons que ta variable soit:
$date: 2008-12-31;
$NbJoursAEnlever = 15;
$Soustraction = mysql_query("SELECT SUBDATE('$date', INTERVAL $NbJoursAEnlever DAY)");
$Row = mysql_fetch_row($Soustraction);
echo $Row[0];
$date: 2008-12-31;
$NbJoursAEnlever = 15;
$Soustraction = mysql_query("SELECT SUBDATE('$date', INTERVAL $NbJoursAEnlever DAY)");
$Row = mysql_fetch_row($Soustraction);
echo $Row[0];
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
12 mars 2008 à 16:12
12 mars 2008 à 16:12
Tu l'a testé ?? Moi cela ne marche pas... Ce que tu m'a envoyé affiche l'heure, et la date n'est pas bonne
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
12 mars 2008 à 16:22
12 mars 2008 à 16:22
drôle d'idée quand même !
m'enfin…
m'enfin…
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
12 mars 2008 à 16:28
12 mars 2008 à 16:28
Ok! effectivement ta solution marche, lintowsca, et dalida (mathieu?) tu pourrais développer ta solution avec mon exemple si ça te dérange pas? Je saisis mal ces fonctions date et mktime...
Merci à vous deux!
Merci à vous deux!
lintowsca
Messages postés
25
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
21 mars 2008
5
12 mars 2008 à 16:33
12 mars 2008 à 16:33
de rien content de t'avoir aider,
voici un exemple avec mktime...
// Indiquer le nombre de jours, mois, ans et le signe plus si c'est en positif.
$nb_ans='0';
$nb_mois='0';
$nb_jours = '-15'; // Par exemple
echo 'il y a quinze jours on étais le : ';
echo date('d/m/Y', mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
Et voici la fonction :
//--------------------------------------------------------------------
// string fonction MyGetDate([int],[int],[int],[TRUE])
//--------------------------------------------------------------------
// Cette fonction retourne une date "relative" à la date du jour, contrairement à mktime qui retourne une date "absolue".
// L'appel sans argument retourne la date du jour au format 15/11/2004
//
// Les arguments (dans l'ordre) :
// [-] année(s) -> année(s) à ajouter/enlever à la date du jour
// [-] mois -> mois à ajouter/enlever à la date du jour
// [-] jour(s) -> jour(s) à ajouter/enlever à la date du jour
// [True] -> format MySql (2004/11/15)
//---------------------------------------------------------------------
// En cas d'erreur sur les arguments, MyGetDate retourne FALSE.
// Sinon une chaine contenant la date demandée
//---------------------------------------------------------------------
function MyGetDate( $nb_ans='0', $nb_mois='0', $nb_jours='0', $mysql=FALSE){
if( is_int($nb_ans) && is_int($nb_mois) && is_int($nb_jours)){
$mysql ? $format = "Y-m-d" : $format = "d/m/Y";
return date($format, mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
}
else{
return FALSE;
}
}
voici un exemple avec mktime...
// Indiquer le nombre de jours, mois, ans et le signe plus si c'est en positif.
$nb_ans='0';
$nb_mois='0';
$nb_jours = '-15'; // Par exemple
echo 'il y a quinze jours on étais le : ';
echo date('d/m/Y', mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
Et voici la fonction :
//--------------------------------------------------------------------
// string fonction MyGetDate([int],[int],[int],[TRUE])
//--------------------------------------------------------------------
// Cette fonction retourne une date "relative" à la date du jour, contrairement à mktime qui retourne une date "absolue".
// L'appel sans argument retourne la date du jour au format 15/11/2004
//
// Les arguments (dans l'ordre) :
// [-] année(s) -> année(s) à ajouter/enlever à la date du jour
// [-] mois -> mois à ajouter/enlever à la date du jour
// [-] jour(s) -> jour(s) à ajouter/enlever à la date du jour
// [True] -> format MySql (2004/11/15)
//---------------------------------------------------------------------
// En cas d'erreur sur les arguments, MyGetDate retourne FALSE.
// Sinon une chaine contenant la date demandée
//---------------------------------------------------------------------
function MyGetDate( $nb_ans='0', $nb_mois='0', $nb_jours='0', $mysql=FALSE){
if( is_int($nb_ans) && is_int($nb_mois) && is_int($nb_jours)){
$mysql ? $format = "Y-m-d" : $format = "d/m/Y";
return date($format, mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
}
else{
return FALSE;
}
}
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
12 mars 2008 à 16:35
12 mars 2008 à 16:35
très utile codes sources hein? ^^
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
12 mars 2008 à 16:43
12 mars 2008 à 16:43
lintowsca, pourquoi tu passes par MySQL alors ?
<?php setlocale( LC_TIME, "fr" ); $day = 13; $month = 3; $year = 1978; $birthday = mktime( 0 , 0 , 0 , $month , $day , $year ); $later = mktime( 0 , 0 , 0 , $month , $day + 15 , $year ); echo '<p>date de naissance : ' , strftime( "%A %d %B %Y" , $birthday ) , '</p>' ; echo '<p>15 jours plus tard : ' , strftime( "%A %d %B %Y" , $later ) , '</p>' ; ?>
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
12 mars 2008 à 16:47
12 mars 2008 à 16:47
non ma variable est une variable récupérée dans une base, ce qui fait qu'elle change souvent, je ne peux donc pas entrer manuellement la date...
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
>
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
12 mars 2008 à 16:50
12 mars 2008 à 16:50
c'est à n'y rien comprendre !!!
c'est une variable, par définition tu y mets ce que tu veux et en récupérant la valeur comme tu le veux.
mais si tu interroges une BDD, fais la travailler !!!
donc c'est un code SQL qu'il te fallait…
c'est une variable, par définition tu y mets ce que tu veux et en récupérant la valeur comme tu le veux.
mais si tu interroges une BDD, fais la travailler !!!
donc c'est un code SQL qu'il te fallait…
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
12 mars 2008 à 16:56
12 mars 2008 à 16:56
Si je pose la question c'est que je ne sais pas comment faire ^^!
Je m'explique pour que tout soit clair :
Dans mon application je dois afficher une intervalle de dates.
Je cherche donc la date la plus récente dans ma base de données, je la met dans une variable appelée $DateRecente, et je cherche la date 15 jours avant $DateRecente puisqu'il s'agit d'un intervalle de 15 jours.
C'est ici que je suis bloquée puisque je ne sais pas comment récupérer cette date.
Je m'explique pour que tout soit clair :
Dans mon application je dois afficher une intervalle de dates.
Je cherche donc la date la plus récente dans ma base de données, je la met dans une variable appelée $DateRecente, et je cherche la date 15 jours avant $DateRecente puisqu'il s'agit d'un intervalle de 15 jours.
C'est ici que je suis bloquée puisque je ne sais pas comment récupérer cette date.
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
>
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
12 mars 2008 à 17:00
12 mars 2008 à 17:00
lol, je ne te reproche pas de ne pas savoir !
mais j'avais compris que le faisais en PHP.
mais puisque tu travailles sur ta BDD, utilises la méthode qu'y t'a été proposée en SQL.
en interrogeant ta base, tu peux lui demander au passage de calculer l'intervalle et même de formater la date en français.
mais j'avais compris que le faisais en PHP.
mais puisque tu travailles sur ta BDD, utilises la méthode qu'y t'a été proposée en SQL.
en interrogeant ta base, tu peux lui demander au passage de calculer l'intervalle et même de formater la date en français.
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
>
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
12 mars 2008 à 17:01
12 mars 2008 à 17:01
les dates en MySQL
lintowsca
Messages postés
25
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
21 mars 2008
5
12 mars 2008 à 16:45
12 mars 2008 à 16:45
car j'avais déjà ce bout de code à portée ;)