Probleme passage entre les annees

nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008 - 4 juil. 2008 à 12:40
nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008 - 4 juil. 2008 à 19:16
salut  . je galere depuis logntemps dans un projet et quand j'ai cru ça termine je tombe sur un beug
bref mon beug cette fois çi j'ai decovert c'est passage entr les années au niveau semaine
j'explique
j'ai table suivante

agent  |  date_debut  |  date_fin
  x      | 2008-01-01 | 2009-01-01

requete est suivante :

$sql="SELECT SAR, Date_debut,Date_fin, "
. "WEEK( Date_debut) AS wDebut,WEEK( Date_fin) AS wfin,DAYOFWEEK( Date_debut) AS wsDebut,DAYOFWEEK( Date_fin) AS wsfin,"
. "TO_DAYS( Date_debut) AS dDebut,TO_DAYS( Date_fin ) AS dFin, year( Date_debut) AS yDebut,year( Date_fin) AS yfin "
. " FROM table where year(date_debut)=$variable_annee OR year(date_fin)=$variable_annee " ;


$requete = $connexion->query($sql);
$result = $requete -> fetchALL();

et voiçi script
<?php
 foreach ($result as $row)
                 {
                  


                    $agent1 = $row['SAR'];
                    $semaine1 = $row['wDebut'];                     $jourSemaine1 $row['wsDebut']; // dimanche 1
                    $jourDebut1 = $row['dDebut'];
                    $jourFin1 = $row['dFin'];


     if ($jourDebut1 < $premier_jour_semaine)
      {
      $jour_debut_final = $premier_jour_semaine;
      }
      else
      {
      $jour_debut_final=$jourDebut1;
      }
         if ($jourFin1 > $dernier_jour_semaine)
      {
      $jour_fin_final = $dernier_jour_semaine;
      }
      else
      {
      $jour_fin_final=$jourFin1;
      }
    
                       for( $jour1 =  $jour_debut_final ;$jour1 <= $jour_fin_final; $jour1++ )
     
                                             {




   
  
                           if( $jourSemaine1 > 1 AND $jourSemaine1 <=7  )
                           $nbrJours6[ $semaine1]++;
                  $jourSemaine1++;
                           if( $jourSemaine1 > 7 )
    
               {
    
               $semaine1++; $jourSemaine1 = 1;
        
            }
            }
                      }
     
                   


               
      ?>

but script et calculrer difference entre date debut et date fin en nombre de jour mais par semaine . résultat va afficher 5 semaine 1 ( semaine 1 de 2008 comence en 31 decembre) et 6 pour reste semaine ( derniere semaine 2008 s'arrete 28 decembre 2009) ei il prend pas reste
j'ai ajouté requete et script pour afficher liens des annees suivant annees présent dans la table. la quand je clique sur 2008 ça marche  (where year(date_debut)=$variable_annee) mais kan je clique sur 2009 ça marche pas
j'ai trouvé beug car dans ma boucle for comence calcul de date debut et pas date fin
le probleme j'ai pas trouvé solution vu semaine e varies et semaine 1 de 2009 par exemple comence 29 decembre 2008 d'ou d'apres cette table je dois avoir resultat pouyr annee 2009 4 jours dans semaine 1
merçi d'avance pour votre aide

2 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
4 juil. 2008 à 16:55
Salut,

Une fonction MySQL fait cela : http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_datediff
Ca évite des calculs en PHP, c'est MySQL qui le calcule sur ses formats de dates.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008
4 juil. 2008 à 19:16
mùerçi de m'avoir répondu
cette fonction je connais et je dois demander excuse car  j'ai pas expliquer vraiment probleme
je dois pas donner difference entre deux dates en total mais nombre de jours  total par semaines
c'est a dire imagine j'ai deux lignes
2008-01-01         2008-01-09
2008-01-01         2008-01-15

donc comme résultat je dois avoir
semaine 1: 10 jours
semaine 2  : 9  jours
semaine 3  :  2 jours
bien sur en prenant pas en compte dimanche ce qui me permet ce script php
bien sur script marche bien mais probleme passage entre deux annees c'est a dire date debut et en 2008 et date de fin c'est en 2009  la il me cree un beug au niveau semaine coomme j'ai expliqué dans problématique
j'espere que t'a compris mon soucis maintenant sinon pour fonction sql tous ce que je sais c'est elle donne difference total et pas avec details sinon si tu connais exemple en net qui explique usage de cette fonction qui marche avec mon but merçi de me passer adresse
cordialement
0
Rejoignez-nous