Date addition

:)
Invité n'ayant pas de compte PHPfrance

08 juil. 2005, 14:52

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 juil. 2005, 14:55

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:
Modifié en dernier par ouckileou le 08 juil. 2005, 15:03, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

08 juil. 2005, 14:57

Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

:)
Invité n'ayant pas de compte PHPfrance

08 juil. 2005, 15:19

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 juil. 2005, 15:22

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... ;)

:)
Invité n'ayant pas de compte PHPfrance

11 juil. 2005, 11:19

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:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2005, 11:27

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

Invité
Invité n'ayant pas de compte PHPfrance

11 juil. 2005, 12:17

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2005, 12:22

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

Invité
Invité n'ayant pas de compte PHPfrance

11 juil. 2005, 12:46

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

:)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

11 juil. 2005, 13:42

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

:)
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 19:00

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 19:12

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

:(
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 19:23

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 19:32

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