besoin d'aide php dates
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

besoin d'aide php dates



  1. #1
    MANTA..

    besoin d'aide php dates


    ------

    Bonjour,



    J'ai besoin de votre aide car, via php, je recupére une periode qui est stocké dans ma base de donnée. La période commence un samedi et fini un samedi et peut contenir 3-4 voir 12 semaine. Ce que je dois faire c'est écrire une ligne pour chaque semaine contenu dans la période dans un fichier xml.



    $contenuXml .= "\t".' <tarif prix="'.round(1.32*(($periode['priceBase']*7)+41)*1.03).'" nbjours="7" date_debut="'.substr($periodeB egin, 0, 10).'"/>'."\r\n";


    Mon probléme c'est que je n'arrive pas à ajouter 7 jours à ma date, voila comment je procède pour l'instant ->

    Code:
    
    $begin= $periode['periodBegin']
    
    while (($begin != $periode['periodEnd']))
                     {
                       
                       
                      $contenuXml .= "\t".'  <tarif  prix="'.round(1.32*(($periode['priceBase']*7)+41)*1.03).'" nbjours="7" date_debut="'.substr($periode['periodBegin'], 0, 10).'"/>'."\r\n";
                                                                   
                      
                        //ajout de 7 jour à la variable begin
    
    
                        $timeStamp = strtotime($begin);
                        $timeStamp += 24 * 60 * 60 * 7;
                        $begin = date("Y-m-d", $timeStamp);
    
                                       
                     }
    Pouvez vous me dire comment je peut faire pour ajouter 7 jours à $begin? merci d'avance

    -----

  2. #2
    Tryph

    Re : besoin d'aide php dates

    Salut,

    tu peux nous en dire plus sur ce qui cloche dans ta façon de faire?
    tu as un message d'erreur? le résultat est différent de ce à quoi tu t'attends?

    à quoi ressemble la chaine de caractère contenue dans $begin?

  3. #3
    MANTA..

    Re : besoin d'aide php dates

    Merci pour ton aide. En fait , ca boucle à l'infini donc à mon avis la variable $begin n'est pas incrémenté. Dans $begin il y a une date de ce format là -> 2013-01-24T10:41:37.000 .

  4. #4
    Tryph

    Re : besoin d'aide php dates

    sur la page de doc de la fonction strtotime() et plus précisément dans la description du paramètre time, tu as un lien vers les différents formats de dates supportés par la fonction.

    sur cette page, on a des formats très proches de celui que tu passes à strtotime() mais rien de tout à fait identique.
    ton format pourrait correspondre au format "SOAP" mais alors la fin de ta chaine contenant ta date (".000") semble être en trop.

    y a des chances pour que tu sois obligé d'adapter un peu la chaine que tu fournis à la fonction strtotime pour la faire correspondre a un format valide. ça vaut le coup de tester en tout cas.

  5. A voir en vidéo sur Futura
  6. #5
    Tryph

    Re : besoin d'aide php dates

    en fait en rejetant un oeil aux formats, je me rend compte que la partie ".000" de ton format de date correspond à la partie "frac" du format SOAP...

    ton format de date semble correct finalement.



    bon par contre il y a d'autres choses à vérifier:

    - je suppose que $periode['periodEnd'] a le même format que $periode['periodBegin'] (et donc le même format que $begin). si c'est effectivement le cas, vu que le format de $begin change quand la ligne suivante est exécutée:
    Code:
    $begin = date("Y-m-d", $timeStamp);
    le test de ta boucle while ne risque pas d'être vrai un jour.

    - chercher l'égalité parfaite entre 2 dates est risqué, suffit d'un décalage d'un centième de seconde entre 2 dates et c'est mort.
    quand on travaille avec des dates, vaut mieux faire des comparaison du genre "inférieur à" ou "supérieur ou égal à"...
    Dernière modification par Tryph ; 24/01/2013 à 14h07.

  7. #6
    MANTA..

    Re : besoin d'aide php dates

    Encore merci pour ton aide, j'ai essayé en méttant inférieur à mais ca ne change pas grand chose vue que les 7 jours ne sont pas ajouté correctement

    J'ai essayé ca aussi pour l'ajout des 7 jours -->

    $begin = date('Y-m-d', strtotime($begin) + strtotime('+7 day'));

    Mais ca me donne un résultat bizarre

    (à coté de date_fin, c'est la valeur de $begin et à coté de date_debut, c'est la date de départ...)

    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1920-12-15"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1964-01-15"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="2007-02-14"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1914-02-08"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1957-03-10"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="2000-04-09"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1907-04-04"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1950-05-04"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="1993-06-03"/>
    <tarif prix="676" nbjours="7" date_debut="2013-12-21" date_fin="2036-07-03"/>

    Au fait, je ne sais pas si ca peut aider mais pour récupéré les dates, je fais appel a une méthode d'un web service (d'ou peut-etre le format soap)
    Dernière modification par MANTA.. ; 24/01/2013 à 15h23.

  8. #7
    Tryph

    Re : besoin d'aide php dates

    et tu as quoi dans $periode['periodEnd'] ?

    parce que après la première itération, $begin contient une date du genre "2013-01-24" normalement.
    alors si $periode['periodEnd'] contient une date du genre "2013-01-24T00:00:00.000", ça ne risque pas d'arrêter de boucler
    Dernière modification par Tryph ; 24/01/2013 à 16h17.

  9. #8
    MANTA..

    Re : besoin d'aide php dates

    finalement j'ai réussi à faire ce que je voulais. Voila ce que ca donne finalement-->

    Code:
    <?php
     
    //fonction de conversion des date en timestamp
    function datetimeTOtimestamp($string) {
        list($year, $month, $day) = explode('-', $string);
        $timestamp = mktime(0, 0, 0, $month, $day, $year);
        return $timestamp;
    }
     
    //initialisation des variables de test
    $periode = array('periodBegin' => "2013-01-01",
                    'periodEnd' => "2013-02-01",
                    'priceBase' => "676");
     
     
    $begin= $periode['periodBegin'];
    $delai = 7; //Découpage en 7 jours
      
    while ((datetimeTOtimestamp($begin) < datetimeTOtimestamp($periode['periodEnd']))){//Tant que la date de début est inférieur à la date de fin
         
        $dateFin = date('Y-m-d', strtotime('+'.$delai.' day',datetimeTOtimestamp($begin))); //date de fin +{delai} jours
         
        $nb_jour = $delai; //Calcul du nombre de jours au cas où l'on dépasserait la date de fin
         
        while(datetimeTOtimestamp($dateFin) > datetimeTOtimestamp($periode['periodEnd'])){//Traitement du dépassement de la date de fin
            $nb_jour--;//on va tester avec 1 jours de moins voir si ça coincide
             
            if(datetimeTOtimestamp(date('Y-m-d', strtotime('+'.$nb_jour.' day',datetimeTOtimestamp($begin)))) == datetimeTOtimestamp($periode['periodEnd']))    {//Test du dépassement, si la date correspond alors on définit la date de fin
                $dateFin = date('Y-m-d', strtotime('+'.$nb_jour.' day',datetimeTOtimestamp($begin)));
            }
        }
         
         
         
        $xmlCatalogue .= "\t".'  <tarif prix="'.round(1.32*(($periode['priceBase']*7)+41)*1.03).'" nbjours="'.$nb_jour.'" date_debut="'.$begin.'" date_fin="'.$dateFin.'"'." />\n\r";
                                                                     
     
     
        $begin = $dateFin;
      
    }
     
    print $xmlCatalogue;
    ?>
    Apparement tu avais réson le probléme venait des format des dates en les convertissant dans le même format ca fonctionne déja mieux

    Merci beaucoup pour ton aide, j'aurais encore plus galéré sans!!!!

Discussions similaires

  1. Besoin d'infos dates IEP provinces
    Par invite056f1147 dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 01/12/2010, 13h03
  2. besoin d'aide exercices pour m'antrainer mes j'ai besoin d'aide
    Par invite5e082da7 dans le forum Physique
    Réponses: 4
    Dernier message: 06/12/2008, 21h37
  3. Besoin d'aide en php
    Par invite5c84ffad dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 26/06/2008, 14h08
  4. Insérer une page php avec variables (ex : page.php?nom=jean) grâce au javascript
    Par invite991c0955 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/05/2005, 17h37