PHP probleme de boucle avec dates

infosub Messages postés 9 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 18 mars 2005 - 17 mars 2005 à 18:15
zaptaf Messages postés 11 Date d'inscription dimanche 10 juillet 2005 Statut Membre Dernière intervention 20 octobre 2009 - 20 oct. 2009 à 19:24
Bonjour,
je suis confronté à un petit problème de boucle pour ajouter plusieurs jour à une date..


le script ci-dessous calcule le nombre de jours entre deux dates, puis l'ajoute à la date de depart.
ex: entre 2005-02-28 et 2005-03-07 la diference est de 7 jours donc la date affiché est 2005-03-07


Pour ça c'est bon, par contre je voudrais pouvoir incrementer d'un jour à chaque fois la date de depart et recuperer toutes les dates intermediares pour les insèrer dans une table MYSQL ( champ date) au même format.
c'est à dire je devrais avoir dans mon champ Date les 8 enregistrements dans l'ordre suivant :


2005-02-28
2005-03-01
2005-03-02
2005-03-03
2005-03-04
2005-03-05
2005-03-06
2005-03-07



Donc j'ai mis une boucle qui compare et incremente de 1 (en commençant par 0) à chaque fois.


Le problème c'est que evidenment ça me donne une erreur (Fatal error: Cannot redeclare dateop() (previously declared in........))!


Donc question comment je peux faire pour recuperer toutes mes dates sur une (ou plusieurs variables) histoire de pouvoir les insèrer après dans ma table!


Voila j'espere que c'est assez clair..


Merci
Rafael


PS : voici le script :



$jour="28";
$mois="02";
$an ="2005";
$jour2="07";
$mois2="03";
$an2="2005";



function diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2){ // $calcule la dierence de jours entre les deux dates
$timestamp2 = mktime(0, 0, 0, $mois, $jour, $an);
$timestamp = mktime(0, 0, 0, $mois2, $jour2, $an2);

$diff = floor(($timestamp - $timestamp2) / (3600 * 24));
return $diff;
}


$nbr_jours = diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2);// recupere nombre de jours sur variable $nbr_jours


echo" ça fait: $nbr_jours";//verif nombre de jours sur variable $nbr_jours


for ($i = 0; $i <= $nbr_jours ; $i++) { // on fait une boucle si ajout est = ou sup à 0
echo "ça donne..$i

";//verif si la boucle fonctionne


function dateop($jour , $mois , $an , $i){ // $i correspond au nombre de jour à ajouter a la date


$timestamp = mktime(0, 0, 0, $mois, $jour+$i, $an);// aditione la diference de jours à la date de debut
return (date("Y-m-d", $timestamp));


$temp = dateop($jour , $mois , $an , $i);


echo" donc ça devrait faire : $temp";
}


}

2 réponses

infosub Messages postés 9 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 18 mars 2005
17 mars 2005 à 20:42
Re-bonjour,


voila c'est bon tout fonctionne ..


Voici le script au cas ou ça pourais intereser quelqu'un !





$jour="18";
$mois="03";
$an ="2005";
$jour2="07";
$mois2="04";
$an2="2005";



function diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2){ // $calcule la dierence de jours entre les deux dates
$timestamp2 = mktime(0, 0, 0, $mois, $jour, $an);
$timestamp = mktime(0, 0, 0, $mois2, $jour2, $an2);

$diff = floor(($timestamp - $timestamp2) / (3600 * 24));
return $diff;
}


$nbr_jours = diff_date($jour , $mois , $an , $jour2 , $mois2 , $an2);// recupere nombre de jours sur variable $nbr_jours



for ($i = 0; $i <= $nbr_jours ; $i++) { // on fait une boucle si ajout est = ou sup à 0
$timestamp = mktime(0, 0, 0, $mois, $jour+$i, $an);
$return=date("Y-m-d", $timestamp);
$query=("INSERT INTO dates (ndate,news,newsl) VALUES ('$return','test','test')");
MYSQL_QUERY($query) or die("Erreur, contactez le webmaster");


}
0
zaptaf Messages postés 11 Date d'inscription dimanche 10 juillet 2005 Statut Membre Dernière intervention 20 octobre 2009
20 oct. 2009 à 19:24
Ca semble excellent mon cher, moi ca marche, j'essaies des trucs, pis ca donne des doublons, le tiens macche très bien.

bravo, un gars qui s'y connait. Si tu as trouvé des bugs et tu as une meilleur version, tu me le fais savoir SVP, car j'entre ca dans une grosse app pis je ne dois faire de gaffe tsé, merci
0
Rejoignez-nous