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

quartz
Invité n'ayant pas de compte PHPfrance

27 mai 2005, 16:15

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".

BFH
Eléphant du PHP | 214 Messages

27 mai 2005, 16:35

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)
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Eléphant du PHP | 413 Messages

27 mai 2005, 16:40

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));
Modifié en dernier par goeb le 27 mai 2005, 16:40, modifié 1 fois.
--
Goeb

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

27 mai 2005, 16:40

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

quartz
Invité n'ayant pas de compte PHPfrance

27 mai 2005, 21:02

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

BFH
Eléphant du PHP | 214 Messages

28 mai 2005, 11:24

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]
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

28 mai 2005, 11:36

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

28 mai 2005, 11:38

... 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:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

28 mai 2005, 14:06

... 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:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

29 mai 2005, 19:09

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é)
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

29 mai 2005, 19:16

Ha ok, à l'occasion, te m'enverra la carte de crédit qui va avec :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

30 mai 2005, 09:30

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
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Petit nouveau ! | 2 Messages

31 mai 2005, 12:52

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. :?