Page 1 sur 2

Date addition

Posté : 08 juil. 2005, 14:52
par :)
Bjour a tous

Voila mon prob, j'ai un champs date dans une base(date)je voudrai que cette date ai 2 mois de plus que la date actuelle

on prend la date actuelle
$date= date("Y-m-d");
$mois= date("m");
$jour= date("d");
$an= date("Y")
date voule (date actuelle + 2 mois)

$moisv=$mois+2;
$datev="$an-$moisv-$d";
et apres ma requette
$requt="insert into valid (date) values ($datev)";
mysql_query($requt)or die(erreur);
la ça marche mais si on tombe au mois de décembre ?

il me mettera 2005-13-08 ??

Y a t-il plus simple ??

Merci a vous

Posté : 08 juil. 2005, 14:55
par ouckileou
oui il y a plus simple
regarde du coté des fonctions de manipulation de dates, dans la doc MySQL

=> http://dev.mysql.com/doc/mysql/fr/date- ... tions.html

car avec ton système il faudrait que tu gères le changement d'année, le nombre de jours dans le mois, les années bissextiles... galère :)

édition : j'avais pas précisé que je parlais de MySQL... :oops:

Posté : 08 juil. 2005, 14:57
par mere-teresa

Posté : 08 juil. 2005, 15:19
par :)
J'ai lu les 2 liens

voici donc ma requette qui revien en erreur
$requt="insert into promo (date) values (($date, INTERVAL 31 DAY))";
mysql_query($requt)or die(all);

Posté : 08 juil. 2005, 15:22
par ouckileou
ben il manque un truc là non ?

de ce genre là : ADDDATE(date,INTERVAL expr type)

sinon en général si tu demandes de l'aide sur quelque chose qui provoque une erreur, donne aussi le message d'erreur, ça aide... ;)

Posté : 11 juil. 2005, 11:19
par :)
ben il manque un truc là non ?

de ce genre là : ADDDATE(date,INTERVAL expr type)

sinon en général si tu demandes de l'aide sur quelque chose qui provoque une erreur, donne aussi le message d'erreur, ça aide... ;)
Ba voila ma requette :
$requt="insert into user (pseudo, email, date) values (,'$pseudo,'$email',ADDDATE($date,INTERVAL 1 MONTH)";
mysql_query($requt);
Mais ça fait pas d'entrée dans la base et y a pas d'erreur, quand je change ADDDATE($date,INTERVAL 1 MONTH) par une autre date ça marche

:roll: :?
:roll:

Posté : 11 juil. 2005, 11:27
par ouckileou
si tu les affiches pas c'est sûr que y'aura pas d'erreur

réessaye avec ça :
$requt="insert into user (pseudo, email, date) values (,'$pseudo,'$email',ADDDATE($date,INTERVAL 1 MONTH)";
mysql_query($requt) or die (mysql_error());
tu devrais en avoir une ;)

parceque le point-virgule avant '$pseudo', il doit pas trop aimer :lol:

de plus, compte tes parenthèses, si tu tombes sur un nombre impair y'a un problème ;)

Posté : 11 juil. 2005, 12:17
par Invité
si tu les affiches pas c'est sûr que y'aura pas d'erreur

réessaye avec ça :
$requt="insert into user (pseudo, email, date) values (,'$pseudo,'$email',ADDDATE($date,INTERVAL 1 MONTH)";
mysql_query($requt) or die (mysql_error());
tu devrais en avoir une ;)

parceque le point-virgule avant '$pseudo', il doit pas trop aimer :lol:

de plus, compte tes parenthèses, si tu tombes sur un nombre impair y'a un problème ;)
Voici le message d'erreur:

Column 'date' cannot be null

Posté : 11 juil. 2005, 12:22
par ouckileou
pourquoi ne corriges-tu pas déjà les deux erreurs que je t'ai signalé ? le point-virgule et la parenthèse manquante...

ce sera déjà ça de fait, et on verra ton problème de date ensuite s'il persiste ;)

Posté : 11 juil. 2005, 12:46
par Invité
pourquoi ne corriges-tu pas déjà les deux erreurs que je t'ai signalé ? le point-virgule et la parenthèse manquante...

ce sera déjà ça de fait, et on verra ton problème de date ensuite s'il persiste ;)
J'ai refait ma requette avant de poster, et le message qui es au dessus et ce qui apparait apres la correction

:)

Posté : 11 juil. 2005, 13:42
par ouckileou
ok donc tu as ça :
$requt="insert into user (pseudo, email, date) values ('$pseudo,'$email',ADDDATE($date,INTERVAL 1 MONTH))"; 
déjà, tu peux séparer les variables du reste de la chaine, c'est plus lisible
et essaye de mettres des quotes autour de $date
$requt="insert into user (pseudo, email, date) values ('".$pseudo.",'".$email."',ADDDATE('".$date."',INTERVAL 1 MONTH))"; 
es-tu sûr de bien récupérer tes variables
fais un echo de $requt et poste ici ce que ça donne

Posté : 12 juil. 2005, 19:00
par :)
ok donc tu as ça :
$requt="insert into user (pseudo, email, date) values ('$pseudo,'$email',ADDDATE($date,INTERVAL 1 MONTH))"; 
déjà, tu peux séparer les variables du reste de la chaine, c'est plus lisible
et essaye de mettres des quotes autour de $date
$requt="insert into user (pseudo, email, date) values ('".$pseudo.",'".$email."',ADDDATE('".$date."',INTERVAL 1 MONTH))"; 
es-tu sûr de bien récupérer tes variables
fais un echo de $requt et poste ici ce que ça donne
Merci ça marche, mais j'ai encore une ptit question avec les dates

comment comparer 2 dates, enfin combien de temps il reste en jours ou en mois d'une date d'une base ici (date) et la date actuelle (dateac)

ex-
$dateac=date("Y-m-d");
apres on fait
fini=$dateac-$date;
echo $fini;
je vois pas trop comment faire mercia vous

Posté : 12 juil. 2005, 19:12
par ouckileou
on t'a donné deux liens au début de ce thread, qui conduisent vers la même doc MySQL, au chapitre des fonctions de dates et d'heures

ça aurait été bien d'aller jeter un petit coup d'oeil par toi-même
si on peut ajouter deux dates, tu aurais pu te dire "tiens on doit pouvoir faire une différence alors"

bref : regarde la fonction DATEDIFF()
je te rappelle le lien : http://dev.mysql.com/doc/mysql/fr/date- ... tions.html

elle ne marchera peut-être pas avec ta version de MySQL
si c'est le cas, une piste peut être de transformer les dates en timestamp, de faire une soustraction puis de reconvertir au format que tu souhaites

Posté : 12 juil. 2005, 19:23
par :(
on t'a donné deux liens au début de ce thread, qui conduisent vers la même doc MySQL, au chapitre des fonctions de dates et d'heures

ça aurait été bien d'aller jeter un petit coup d'oeil par toi-même
si on peut ajouter deux dates, tu aurais pu te dire "tiens on doit pouvoir faire une différence alors"

bref : regarde la fonction DATEDIFF()
je te rappelle le lien : http://dev.mysql.com/doc/mysql/fr/date- ... tions.html

elle ne marchera peut-être pas avec ta version de MySQL
si c'est le cas, une piste peut être de transformer les dates en timestamp, de faire une soustraction puis de reconvertir au format que tu souhaites
Ma version de mysql est 4.0.2

:((

je modifi donc mon forma date en timestamp ?

Posté : 12 juil. 2005, 19:32
par ouckileou
non, tu n'es pas obligé de modifier ton champ

mais dans ta requête tu peux utiliser cette fonction UNIX_TIMESTAMP()
qui va transformer ta date en timestamp, faire ta soustraction et obtenir le résultat