Eléphant du PHP |
377 Messages
07 sept. 2007, 13:40
@iclo : non, la plus petite unité n'est pas le jour étant donné qu'un abonnement d'un mois pris le 2 février ne fera que 28 jours (voire 29 pour une année bissextile) alors que le même abonnement pris en juillet durera 31 jours...
@ripat : bah la date de début d'abonnement, c'est le jour où on s'abonne...
En fait je définis ma table des abonnements (prix, durée, nom...)
Puis au moment où je choisis mon abonnement je fais ceci :
$requeteverifvalue=mysql_query("SELECT duree_abonnement,id_abonnement,nb_par_pro
FROM abonnements WHERE id_abonnement=\"".mysql_real_escape_string($_GET['id'])."\"") or exit(mysql_error());
if(mysql_num_rows($requeteverifvalue) >0) {
$r=mysql_fetch_assoc($requeteverifvalue);
$sql="INSERT INTO pros_abonnements
SET id_pro='".$_SESSION['id_pro']."', id_abonnement='".$r['id_abonnement']."', date_debut_abonnement=NOW(),
date_fin_abonnement=DATE_ADD(DATE_ADD(DATE_ADD(NOW(), INTERVAL DAY('".$r['duree_abonnement']."') DAY),
INTERVAL MONTH('".$r['duree_abonnement']."') MONTH), INTERVAL YEAR('".$r['duree_abonnement']."') YEAR)";
}
J'ai simplifié un peu, mais c'est l'idée
Donc dans ce cas précis, étant donné que $r['duree_abonnement'] n'est pas une date valide, les fonctions DAY(), MONTH() et YEAR() me renvoient NULL, donc les DATE_ADD() s'affolent et le tout plante

Petit scarabée deviendra grand