Page 1 sur 2

Au sujet des dates

Posté : 06 mars 2005, 14:22
par dark_vidor
j'ai une date stoker en base que je recupere de la maniere suivante
mysql_result($req,0,"dateheure")
je souhaiterai ajouter a cette date 30 jours ...
j'ai regarder dans les fonctions php pour les dates et apparement il faut que j'utilise la fonction mktime
le seul pb c'est que cette fonction est apparement avec la date de ce jour et non avec une autre date

l'ajout de seconde me parait peu sur ... et peut etre source d'erreur

comment puis je faire ?
(j'ai pas tout a fait compris comment elle fonctionne mktime ^^)

Posté : 06 mars 2005, 15:49
par Flood
Hello,

La fonction mktime() te permet de générer un entier unique pour une date donnée (un timestamp). Tu peux lui préciser quelque date que ce soit, la seule contrainte étant que tu aies facilement accès à l'année, au mois, au jour, etc.

Mais dans ton cas, pourquoi n'utilises-tu pas des fonctions SQL toutes faites ?
Par exemple, la fonction DATE_ADD() sous MySQL ?
(voir http://dev.mysql.com/doc/mysql/fr/date- ... tions.html)

/Flood

Posté : 06 mars 2005, 18:19
par dark_vidor
SELECT ADDDATE('mysql_result($req,0,"dateheure")', INTERVAL 30 DAY);
c'est possible un truc dans ce genre la ?

Posté : 06 mars 2005, 18:23
par Flood
SELECT ADDDATE('mysql_result($req,0,"dateheure")', INTERVAL 30 DAY);
c'est possible un truc dans ce genre la ?
Attention à ne pas mélanger PHP et SQL...
Tu dois incorporer ta fonction de manipulation de date dans ta requête SQL initiale, donc dans la requête que tu as passé en paramètre à la fonction mysql_query() qui t'a retourné $req...

/Flood

Posté : 06 mars 2005, 18:38
par dark_vidor
j'ai fait ceci :
$date_fin = mysql_query("SELECT ADDDATE('dateheure', INTERVAL 30 DAY) from joueurs where id=\"".$_GET["id_joueurs"]."\"");
$date_fin = date_format($date_fin);

ensuite plus loin y'a echo(date_fin)

mé y'a rien qui s'affiche :cry:

Posté : 06 mars 2005, 18:58
par Flood
Normal : La fonction mysql_query() te retourne une ressource pour accéder aux résultats, pas directement les résultats... ;)

/Flood

Posté : 06 mars 2005, 19:01
par dark_vidor
on utilise donc :lol:

c koi la fonction pour avoir direct le resultat sans passer par 50 lignes ? :cry:

Posté : 06 mars 2005, 19:16
par Flood
Pas besoin de 50 lignes...
Après ton mysql_query(), tu peux utiliser mysql_fetch_assoc() par exemple...
Au passage, évite mysql_result()...

/Flood

Posté : 06 mars 2005, 19:20
par dark_vidor
j'ai fait
$date_fin = mysql_query("SELECT ADDDATE('dateheure', INTERVAL 30 DAY) from joueurs where id=\"".$_GET["id_joueurs"]."\"");
$date_fin = mysql_fetch_assoc($date_fin);
mé toujours rien ^^
j'ai trop de mal avec ces requetes sql :cry: :cry:

Posté : 06 mars 2005, 19:28
par Xenon_54
$date_fin = mysql_query("SELECT ADDDATE('dateheure', INTERVAL 30 DAY) from joueurs where id=\"".$_GET["id_joueurs"]."\"");
list($date_fin) = mysql_fetch_row($date_fin);
;)

Posté : 06 mars 2005, 19:33
par dark_vidor
tjrs pas
j'ai fait ça aussi :
$date_fin = mysql_fetch_array($date_fin);
$date_fin = $date_fin['dateheure'];
mé tjrs rien :cry:

sachant que la date doit rester sous la meme forme que le depart ...
2005-02-08 13:07:50
parce que apres elle passe dans une fonction pour etre remise en français plus clair ^^

Posté : 06 mars 2005, 19:44
par Flood
Hello,

Ce ne doit pas être
SELECT ADDDATE('dateheure', INTERVAL 30 DAY) from
Mais
SELECT ADDDATE(dateheure, INTERVAL 30 DAY) from
Attention aussi à tester le nombre de résultats en retour avant d'utiliser mysql_fetch_row() ou autre, via la fonction mysql_num_rows().

/Flood

Posté : 06 mars 2005, 22:00
par dark_vidor
merci ...

bon autre pb ^^

voila je fait
echo(date("Y-m-d H:m:s",mktime(0, 0, 0, date("m"), date("d")+7, date("Y")));
ça me retourne 2005-03-13 00:03:00 alors qu'il est 20:50 ^^

pk ça me met 00:03:00 ?

moi je voudrais 2005-03-13 20:50:00 :?

Posté : 06 mars 2005, 22:14
par Flood
Hello,

Pourquoi passer par mktime() si tu veux la même heure ?
Garde ton expression en y retirant H:m:s et en concaténant l'appel à la fonction date avec l'arguement H:m:s pour rajouter l'heure courante...

/Flood

Posté : 06 mars 2005, 22:39
par dark_vidor
ouep quel boulet j'y est pas penser ^^

bon j'ai un pb avec le truc de toute a l'heure ...

les dates c pas toujours + 30 jours ...
il faut que par exemple si l'inscription a eu lieu le 16/02/05
la date de fin soit 15/03/05
et ça en fait quelque soit le mois :roll: