Page 1 sur 1

Soustraire un jou ( ou une semaine) à partir d'une date

Posté : 27 mai 2005, 16:15
par quartz
Salut à tous,
à l'aide du script suivant:
date("Y-m-d", strtotime("-1 day"))
J'aurais la date d'hier, et si je change "-1 day" par "-1 week" j'aurais la date de vendredi dernier.Cela fonctionne correctement, mais le problème est que je veu la même fonctionnalité mais à partir d'une date quelconque (et pas la date courante comme le fait le script ci dessus).
Les dates que j'utilise sont sous le format: "Y-m-d".

Posté : 27 mai 2005, 16:35
par BFH
Tes dates elles font partie d'une table d'une Base ou tu les rentre a partir d'un formulaire?
Parce que ce que tu peux faire :
$query="SELECT * FROM table";
$result=mysql_query($query)or die (mysql_error());
$row=mysql_fetch_assoc($result)or die (mysql_error());
$date=$row["DateTime"];// DateTimes est le nom du champs qui stocke les dates
$DATE=$date("Y-m-d", strtotime("-1 day")) ;
Pour le cas d'une base de données (je crois que ça marche tu dois le tester)

Posté : 27 mai 2005, 16:40
par goeb
tu peux utiliser un 2eme argument à strtotime pour dire quelle est ta reference dans le temps :
$timestamp = mktime(12, 0, 0, $mois, $jour, $annee);
date("Y-m-d", strtotime("-1 day", $timestamp));

Posté : 27 mai 2005, 16:40
par mere-teresa
Effectivement si tu souhaites traiter les dates AVANT insertion dans la BDD, utilise du PHP,
sinon demande pendant la requête à MySQL de calculer la date pour toi (requête de type select champ from table where date > date__max).

RTFM : http://www.nexen.net/docs/mysql/annotee ... ?lien=date

Posté : 27 mai 2005, 21:02
par quartz
Tes dates elles font partie d'une table d'une Base ou tu les rentre a partir d'un formulaire?
Parce que ce que tu peux faire :
...
Pour le cas d'une base de données (je crois que ça marche tu dois le tester)
Salut,
Voilà je vous pose comment s'est présenté le besoin de cette manipulation de date:

je veux publier sur une page web une liste quotidienne d'articles.
j'ai fait ma table article comprenant les champs id_articles, titre_article, lien_article et enfin date_article.
j'ai réussi à publier ma page php contenant la liste des artciles publiés à la date x.( extraits de la base de données en sélectionnant selon la date)
maintenant, je veux faire en bas de la page une barre de navigation contenant des liens de l'archive des artciles:
la barres comme suit: 27-05-2005 26-05-2005 25-05-2005 etc...( pour la semaine actuelle) puis à la fine deux lien:
un lien "semaine dernière" qui mènera vers une barre de lien comme celle ci-dessus mais avec les dates de la semaine dernière.
J'ai réussi à faire ce système pour la semaine actuelle, mais pour "naviguer dans le temps" pour l'archive j'ai pas trouver de solution!!!

Mon grand problème est dans ce truc de gérer les dates de l'archive des articles, Bref je veux un système de navigation dans l'archive selon les dates comme ceux qui existent dans les blogs.
J'espère que j'ai bien expliqué.J'ai pas voulu cherché un script prêt à l'emploi car je veux m'exercer :)
Toute aide sera la bienvenue, et merci a tous

Posté : 28 mai 2005, 11:24
par BFH
Je viens de lire ton post alors deux choses :
_ Si tu parles qu'a moi pas la peine de me vousvoyer je prefere qu'on me tutoie
_J'ai rien compris du tout a ce que tu voulais :lol: donc je vais te donner une solution infaillible à tes problèmes : tu cries très très fort CYRANO et là tes problèmes de code s'envoleront! :)

Non, sinon sans deconner en fait tu veux juste pouvoir selectionner des articles en fonction de leur date de parution (si j'ai bien compris). Alors avec des liens je ne sais pas comment faire mais avec un bouton je sais par contre là chez moi je peux rien te proposer faudra attendre lundi
[/php]

Posté : 28 mai 2005, 11:36
par Cyrano
Tu peux peut-être exploiter un truc de PHP : date("W") qui va te donner le numéro de la semaine en cours dans l'année comme point de repère.

Posté : 28 mai 2005, 11:38
par Cyrano
... donc je vais te donner une solution infaillible à tes problèmes : tu cries très très fort CYRANO et là tes problèmes de code s'envoleront! :)
Chuuuuut, il y en a qui vont entendre, la folie pourrait me gagner, je pourrais me prendre pour un gourou et monter une secte du genre Les programmeurs du divin avec moi pour Dieu unique, enfin l'horreur totale :langue:

Posté : 28 mai 2005, 14:06
par Cyrano
... tu cries très très fort CYRANO et là tes problèmes de code s'envoleront! :)
Ha c'est malin, voilà le résultat, ça va aider pour les recherches dans les archives. :langue:

Posté : 29 mai 2005, 19:09
par BFH
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de cyrano
Ah bon t'es pas au courant, la secte elle existe deja! :agenouille:
J'ai commencé d'encaisser les chèques d'inscription :langue: (500 €uros l'unité)

Posté : 29 mai 2005, 19:16
par Cyrano
Ha ok, à l'occasion, te m'enverra la carte de crédit qui va avec :langue:

Posté : 30 mai 2005, 09:30
par BFH
Alors Quartz, t'as codé un peu pendant le week-end ou pas?
T'as trouvé ce que tu voulais ou t'as encore besoin d'aide

Posté : 31 mai 2005, 12:52
par 100%Quartz
Alors Quartz, t'as codé un peu pendant le week-end ou pas?
T'as trouvé ce que tu voulais ou t'as encore besoin d'aide
Salut BHF, salut à tous,
je suis mainent 100%quartz :)
pour le problème je l'ai résolu parfaitement en m'inspirant de vos aides, un grand merci à vous tous.
<?echo date("Y-m-d", strtotime(" +$x week -1 day"));?>
Ce bout de code donne une date obtenue en ajoutant "x" semaine moin un jour. La variable "x" doit être décrémentée pour avoir la date de la semaine prochaine, et elle doit être incrémentée pour avoir la date de la semaine prochaine.J'ai remarqué que Cyfro dans l'une de ses réponse a écris un code php dans une url, la chose que je savais pas, et là je l'ai utiliser pour incrémenter ou décrementer la variable x comme suis:
La page qui contient le code est nommée articles.php
<a href="articles.php?<? if (isset($_GET['x'])) { $x = $_GET['x'] - 1;} echo( 'x=');?><?echo($x);?>&day=<? echo date("Y-m-d", strtotime(" +$x week -7 day"));?>">semaine précédente</a>
Dans ce code on a un lien intitulé " semaine précédente" son url va donner:
articles.php?x=x-1&day= 2005-05-24
"day" est une variable url qui va etre passée à la requette sql pour extraire les article de la date obtenu ( ci-dessus 2005-05-24 )
la viarable "x" étant initialisée à 0 dans un lien qui mènera va cette page "articles.php"
Maintenat pour mettre une barre de navigation "dans les dates" de la semaine il suffit de mettre:

*soustraire (ou ajouter)x semaines et 1 jour
<a href="articles.php?x=<? echo($x+1);?>&day=<?echo date("Y-m-d", strtotime(" +$x week-1 day"));?>">|<?php echo date("Y-m-d", strtotime(" +$x week -1 day")); ?>|</a> 
puis
*soustraire(ou ajouter) x semaines et 2 jours
<a href="articles.php?x=<? echo($x+1);?>&day=<?echo date("Y-m-d", strtotime(" +$x week -2 day"));?>">|<?php echo date("Y-m-d", strtotime(" +$x week -2 day")); ?>|</a>/
jusqu'à :
*soustraire(ou ajouter) x semaines et 6jours
<a href="articles.php?x=<? echo($x+1);?>&day=<?echo date("Y-m-d", strtotime(" +$x week -6 day"));?>">|<?php echo date("Y-m-d", strtotime(" +$x week -6 day")); ?>|</a>
Chacun de ces six liens affiche un lien dont le titre est la date du jour obtenu apres avoir soustraire x semaine et 1 ou 2 jusqu'à ...6jours , l'url du lien fera passer la valeur de cette date à la variable day, pour que cette dernière la passe à la requette sql.
Voilà, j'espère que trop expliquer ne fera pas perdre le sens. :?