IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

pb de boucles


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 25
    Points : 24
    Points
    24
    Par défaut pb de boucles
    bonjour!!!
    dans ma BD j'ai une table "periode_congé" qui contient les infos ( num,login,date_deb,date_fin,type_cong...)
    a partir de cette table , j'ai recupéré le mois de debut et de fin de congés par un select normal,ainsi que le num et le type!!
    j'ai mis le resultat dans un tableau!!!par la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($resultat=mysql_fetch_array($res))
        {
            $p_num=$resultat['num'];
            $tab_mois[$p_num]=$resultat['type'];
            $tab_mois[$p_num]=$resultat['deb'];
              $tab_mois[$p_num]=$resultat['fin'];
        }
    maintenant j'ai un tableau à 4 champs:num,type,deb et fin
    mon pb: c'est que que je veux verifier si le mois deb==mois fin !!! si c'est vrai donc pour chaque mois je passe à verifier le type d'absence(type) si il est ==5 (id de type maladie) donc je dois recuperer un compteur de ce type pour chaque mois!!!!si c'est le cas donc j'avance mon compteur d'absence de type maladie pour tout d'abord janvier puis pour fevrier....decembre !! et pour chaque mois je dois retourner une valeur du compteur pour chaque type d'absence!!!sachant qu'il existe 5 type d'absence dans mon cas!!! (id=2 si c'est congés_exptionnels,id=3 si c'est un rtt....)
    j'ai pas compri comment untiliser les foreach dans mon cas !!! surrt que lorsque je fais deux boucle foreach imbriqués ca plante et boucle à l'infinie
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if($resultat['deb']==$resultat['fin']){
     
           foreach ($tab_mois as $resultat['deb']){
     
     
            foreach ($tab_mois as $resultat['p_type']){
                if($resultat['p_type']==5)
     
                $cpt_abs++;
    ------------------------------------------|
    |num |type | deb | fin |
    |2 | 1 |6 | 6 |
    |9 | 5 |3 |3 |
    |8 |3 |8 |8 |
    |5 | 5 |3 |3 |
    ....

    par exemple ici j'ai 2 absence de type=5(maladie) pour le mois=3(mars)!!
    merci pour votre aide !!!

  2. #2
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Le premier problème que je peux voir c'est que dans ton while initial, tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    while ($resultat=mysql_fetch_array($res))
        {
            $p_num=$resultat['num'];
            $tab_mois[$p_num]=$resultat['type'];
            $tab_mois[$p_num]=$resultat['deb'];
              $tab_mois[$p_num]=$resultat['fin'];
        }
    Résultat, dans $tab_mois[$p_num], tu vas te retrouver uniquement avec $resultat['fin'], puisque $resultat['deb'] va écraser $resultat['type'] et que $resultat['fin'] écrase $resultat['deb']. Si tu veux avoir les trois valeurs dans la même case, il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tab_mois[$p_num] = array($resultat['type'], $resultat['deb'], $resultat['fin']);
    Après, quand tu veux accéder à tes éléments, tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $cpt_abs = 0;
     
    foreach ($tab_mois as $resultat)
          if ($resultat[0] == 5)
               $cpt_abs++;
    Voilà, bonne chance

    edit: J'avais oublié mes parenthèses pour le foreach, je les ai rajouté maintenant, désolé

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [langage] if et boucle { ..}
    Par kacedda dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2003, 17h25
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 10h47
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo