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

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
c koi la fonction pour avoir direct le resultat sans passer par 50 lignes ?

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

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

s et en concaténant l'appel à la fonction date avec l'arguement H

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
