Probleme avec un array

Probleme avec un array - PHP - Programmation

Marsh Posté le 24-06-2008 à 14:11:07    

Bonjour à tous,
 
Je viens de trouver un petit script me permettant de trouver les dates comprises en tre 2 dates données.
Jusque la tout va bien.
Par contre, je dois recuperer les valeurs des dates contenues dans le tableau afin de les comparer avec d'autres dates (provenant d'une bdd).
 
Apres avoir cherché, j'avoue etre paumé et n'arrive pas à extraire que les dates de ce tableau...
 
Si quelqu'un pouvait m'apporter un peu d'aide...
 
voici le code permettant de recuperer les dates :
 

Citation :


<?php
/**
* function getDatesBetween
* renvoie un tableau contenant toutes les dates, jour par jour,
* comprises entre les deux dates passées en paramètre.
* NB : les dates doivent être au format aaaa-mm-dd (mais on peut changer le parsing)
* @param (string) $dStart : date de départ
* @param (string) $dEnd : date de fin
* @return (array) aDates : tableau des dates si succès
* @return (bool) false : si échec
*/
function getDatesBetween ($dStart, $dEnd) {
    $iStart = strtotime ($dStart);
    $iEnd = strtotime ($dEnd);
    if (false === $iStart || false === $iEnd) {
        return false;
    }
    $aStart = explode ('/', $dStart);
    $aEnd = explode ('/', $dEnd);
    if (count ($aStart) !== 3 || count ($aEnd) !== 3) {
        return false;
    }
    if (false === checkdate ($aStart[1], $aStart[2], $aStart[0]) || false === checkdate ($aEnd[1], $aEnd[2], $aEnd[0]) || $iEnd <= $iStart) {
        return false;
    }
    for ($i = $iStart; $i < $iEnd + 86400; $i = strtotime ('+1 day', $i) ) {
        $sDateToArr = strftime ('%d/%m/%Y', $i);
        $sYear = substr ($sDateToArr, 6, 4);
        $sMonth = substr ($sDateToArr, 3, 2);
        $aDates[$sYear][$sMonth][] = $sDateToArr;
     
    }
     
     
    if (isset ($aDates) && !empty ($aDates)) {
        return $aDates;
    } else {
        return false;
    }
}
 
$aDates = getDatesBetween ('2008/09/01', '2008/10/31');
echo '<pre>', print_r ($aDates), '</pre>';
 
echo $aDates[$val];
 
?>


 
 
Merci d'avanace pour votre aide !

Reply

Marsh Posté le 24-06-2008 à 14:11:07   

Reply

Marsh Posté le 24-06-2008 à 15:24:19    

Je penses que je vais faire autrement....

Reply

Marsh Posté le 25-06-2008 à 20:51:01    

As-tu réussi à te dépatouiller autrement ?


---------------
Nord-des-Landes.com: portail des habitants, commerçants et touristes du Pays Landes Nature Cote d'Argent; évènements, petites annonces...
Reply

Marsh Posté le 25-06-2008 à 21:25:01    

pour la fin du script:
 
echo '<pre>';
print_r($aDates);
echo '</pre>';
 
en effet print_r envoi direct vers la sortie, c'est "comme" echo...
 
voici un moyen pour parcourir le tableau:
 

Code :
  1. foreach($aDates as $annees) {
  2. foreach($annees as $mois) {
  3.  foreach ($mois as $jours) {
  4.  echo $jours,'<br />';
  5.  }
  6. }
  7. }


 
ca liste toutes les dates... remplace le echo $jours; par ce que tu veu
 
ne sachant pas ce que tu veu en faire c difficile d'en dire plus.


Message édité par wrksx le 25-06-2008 à 21:26:10
Reply

Marsh Posté le 02-07-2008 à 17:21:48    

merci wrksx,
 
j'ai proceder autrement.
j'ai converti mes dates en timestamp, et je fais une comparaison entre ma date du jour et celle de debut et de fin.
 
De cette maniere, je sais si l'on est dans la periode donnee.
 
merci bcp pour ton aide !

Reply

Marsh Posté le 03-07-2008 à 08:26:13    

Bonjour,
 
Je ne sais pas ce que tu as trouvé comme solution, mais il y a ça :

Code :
  1. <?php 
  2.   function getDatesBetween ($dStart, $dEnd)
  3.   {
  4.     $tsStart = strtotime($dStart);
  5.     $tsEnd = strtotime($dEnd);
  6.     while ($tsStart <= $tsEnd)
  7.     {
  8.       $jour[] = date('d/m/Y', $tsStart);
  9.       $tsStart = strtotime('+1 day', $tsStart);
  10.     }
  11.     return $jour;
  12.   }
  13.  
  14.   $aDates = getDatesBetween ('2007/12/01', '2008/03/02');
  15.   echo '<pre>', print_r ($aDates), '</pre>';
  16. ?>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed