Probléme avec boucle pour date PHP

Fermé
rafa - 17 mars 2005 à 18:12
 El Fenomeno - 11 mai 2005 à 11:12
Bonjour,
je suis confronté à un petit problème de boucle pour ajouter plusieurs jour à une date..

le script ci-dessous on 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 ( le champ date) les dates comprises entre les deux (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 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 "<p>ça donne..$i</p>";//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";
}

}

1 réponse

El Fenomeno
11 mai 2005 à 11:12
En me basant sur ton code je crois que je répond à ta demande !

<?php
$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 Jour(s)<br>";//verif nombre de jours sur variable $nbr_jours

function dateop($jour , $mois , $an , $i){ // $i correspond au nombre de jour à ajouter a la date
$temp = array();
for($j=0;$j<=$i;$j++){
$timestamp = mktime(0, 0, 0, $mois, $jour+$j, $an);// aditione la diference de jours à la date de debut
$temp[$j] = date("Y-m-d", $timestamp);
}
return $temp;
}
$tab = array();
$tab = dateop($jour , $mois , $an , $nbr_jours);
for($k=0;$k<count($tab);$k++){
echo" Jour $k : $tab[$k]<br>";
}
?>
A+
0