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 :

Décalage avec les cases d'un tableau pour étendre mes évènements


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut Décalage avec les cases d'un tableau pour étendre mes évènements
    Bonjour à tous,

    Je rencontre actuellement un souci sur une application de gestion de planning.
    Ma base contient des évènements qui ont entre autres, une date de début, une heure de début et de fin.

    Je génère un tableau avec 5 jours (en enlevant les week-end) et dans chaque colonne comme vous l'imaginez, j'ajoute mes évènements. Je place le départ de chaque évènements correctement mais quand j'essaye d'étendre la case sur plusieurs lignes avec un rowspan, je me retrouve avec un décallage somptueux...

    Plus tôt, on m'a dit qu'en fait, si j'ai bien compris, je crée plusieurs des td en trop... mais je sais pas trop trop comment gérer le problème...

    Est-ce que vous auriez une idée ?


    Voici mon code php me servant à construire mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    for ($i=1; $i<=30; $i++) {
     
    echo "<tr><td class='heure'>".$heure_deb;
    if ($i%2) { echo ":00"; } else { echo ":30";}
     
    if ($heure_deb < 10) {
    $heure_debut = "0".$heure_deb;
    }
    else {
    $heure_debut = $heure_deb;
    }
     
    $heure_finplanning = $heure_fin;
     
    if ($i%2) {
      $heure_debut .=":00:00"; 
      $heure_finplanning .=":30:00"; 
    }
    else 
    {
      $heure_debut .=":30:00"; 
      $heure_finplanning +=1; 
      $heure_finplanning .=":00:00"; 
    }
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
      $events = mysql_query($sql);
      while ($event = mysql_fetch_assoc($events)) {
        if ($heure_debut == $event['heure_debut']) { 
          echo "<td class='type".$event['type']."' rowspan='2'>";
          echo '<strong>';
          echo $event['nom_client']."</strong> (".$event['designation'].")";
        }
        else {
          echo "<td>";
        }
      }
     
      echo "</td><td";
      $events1 = mysql_query($sql1);
      while ($event1 = mysql_fetch_assoc($events1)) {
        if ($heure_debut == $event1['heure_debut']) { 
          echo " class='type".$event1['type']."'><strong>".$event1['nom_client']."</strong> (".$event1['designation'].")"; 
        }
        else {}
      }
     
      echo "</td><td";
      $events2 = mysql_query($sql2);
      while ($event2 = mysql_fetch_assoc($events2)) {
        if ($heure_debut == $event2['heure_debut']) { 
        echo " class='type".$event2['type']."'><strong>".$event2['nom_client']."</strong> (".$event2['designation'].")"; }
        else { }
      }
     
      echo "</td><td";
      $events3 = mysql_query($sql3);
      while ($event3 = mysql_fetch_assoc($events3)) {
      if ($heure_debut == $event3['heure_debut']) { 
      echo " class='type".$event3['type']."'><strong>".$event3['nom_client']."</strong> (".$event3['designation'].")"; }
      else {
     
      }
      }
     
      echo "</td><td";
      $events4 = mysql_query($sql4);
      while ($event4 = mysql_fetch_assoc($events4)) {
      if ($heure_debut == $event4['heure_debut']) { 
      echo " class='type".$event4['type']."'><strong>".$event4['nom_client']."</strong> (".$event4['designation'].")"; }
      else {
     
      }
      }
     
      echo "</td></tr>";
     
      if ($i%2) { } else { $heure_deb += 1; }
      }
    Je joins également deux screenshots de ce que ca donne.
    Merci

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Salut,
    Citation Envoyé par Chouller Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while ($event = mysql_fetch_assoc($events)) {
        if ($heure_debut == $event['heure_debut']) { 
          echo "<td class='type".$event['type']."' rowspan='2'>";
          echo '<strong>';
          echo $event['nom_client']."</strong> (".$event['designation'].")";
        }
        else {
          echo "<td>";
        }
      }
     
      echo "</td><td";
    si tu as un rawspan, le tour suivant du while, il ne faut pas afficher de td :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    while ($event = mysql_fetch_assoc($events)) {
        if ($heure_debut == $event['heure_debut']) { 
          echo "<td class='type".$event['type']."' rowspan='2'>";
          echo '<strong>';
          echo $event['nom_client']."</strong> (".$event['designation'].")</td>";
          bla = true;
        }
        else {
          if (!bla) echo "<td></td>";
          bla = false;
        }
      }
     
      echo "<td"; //</td> incorporé ci-dessus
    Z.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Yes !

    Ca arrange le problème... Mais sachant que j'avais mis 2 pour les tests, mon rowspan peut des fois être plus grand vu qu'une heure c'est un rowspan de 2.
    Donc pour un rendez-vous de trois heures...

    Alors en fait, si je suis cette logique...
    il faut que je mette mon bla égal à mon rowspan...
    et que j'enleve un à chaque tour ?

    Ca pourrait marcher un truc comme ça ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Si ça intéresse quelqu'un.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
      $events = mysql_query($sql);
      while ($event = mysql_fetch_assoc($events)) 
      {
        if ($heure_debut == $event['heure_debut']) 
        { 
          echo "<td class='type".$event['type']."' rowspan='".$event['delai']."'>";
          echo '<strong>';
          echo $event['nom_client']."</strong> (".$event['designation'].")";
          $bla = $event['delai'];
        }
        else 
        {
          if ($bla > 1) { $bla -=1; }
          else { echo "<td></td>"; }
        }
      }
    Ok ça roule.
    Merci merci beaucoup Z !


    Chou

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 124
    Par défaut
    Note à Zwiter, ta bidouille pourrait être correcte si on avait un colspan, mais la il s'agit d'un rowspan. Ici, il faut garder dans des variables la durée de l'événement par colonne pour savoir quand s'arrêter et décrémenter ces variables à chaque changement de 1/2 heure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    $delai0 = 0;
    $delai1 = 0;
    $delai2 = 0;
    $delai3 = 0;
    $delai4 = 0;
    for ($i=1; $i<=30; $i++) {
      echo "<tr><td class='heure'>".$heure_deb;
      if ($i%2) { echo ":00"; } else { echo ":30";}
     
      if ($heure_deb < 10) { 
        $heure_debut = "0".$heure_deb;
      } else {
        $heure_debut = $heure_deb;
      }
    
      $heure_finplanning = $heure_fin;
     
      if ($i%2) {
        $heure_debut .=":00:00"; 
        $heure_finplanning .=":30:00"; 
      } else {
        $heure_debut .=":30:00"; 
        $heure_finplanning +=1; 
        $heure_finplanning .=":00:00"; 
      }
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
    
      if ($delai0 > 1) {
        $delai0--;
      } else {
        $events = mysql_query($sql);
        $delai0 = 0;
        $tdmak = "<td>";
        $tdtext = "&nbsp;";
        while ($event = mysql_fetch_assoc($events)) {
            
          if ($heure_debut == $event['heure_debut']) { 
            $tdmak = "<td class='type".$event['type']."' rowspan='$event['delai']'>";
            $tdtext = "<strong>$event['nom_client']</strong>($event['designation'])";
            $delai0 = $event['delai'];
          }
        }
        echo $tdmak.$tdtext."</td>\n";
      }
    
      if ($delai1 > 1) {
        $delai1--;
      } else {
        $events = mysql_query($sql1);
        $delai1 = 0;
        $tdmak = "<td>";
        $tdtext = "&nbsp;";
        while ($event = mysql_fetch_assoc($events)) {
            
          if ($heure_debut == $event['heure_debut']) { 
            $tdmak = "<td class='type".$event['type']."' rowspan='$event['delai']'>";
            $tdtext = "<strong>$event['nom_client']</strong>($event['designation'])";
            $delai1 = $event['delai'];
            }
        }
        echo $tdmak.$tdtext."</td>\n";
      }
    
      . . .  
       
      echo "</tr>";
      
      if ($i%2) { } else { $heure_deb += 1; }
      }
    Maintenant, ça dépend aussi de ton ordre SQL, si tu peux récupérer plus de 1 événement dans $event = mysql_fetch_assoc($events) pour l'heure de début, tu vas créer plusieurs colonnes pour une journée, et c'est pas bon, non plus (d'autant que tu auras un cumul de délai), mais tu m'as dit que ça n'était jamais le cas, donc ça devrait être bon.

    Zut, trop tard ... ça m'apprendra à faire autre chose

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Bah, j'ai conscience que le système pourrait être plus évolutif...
    Mais cela ne fait pas partie du cahier vu qu'on gère le planning d'une seule personne. A ce moment là...

    Le don de non-ubiquité !
    ça me rappelle l'école

    Merci pour vos remarques et vos conseils.
    Résolu !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH...

    Bonjour à vous,

    On y étais presque !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
     
    for ($i=1; $i<=30; $i++) {
     
    echo "<tr><td class='heure'>".$heure_deb;
    if ($i%2) { echo ":00"; } else { echo ":30";}
     
    if ($heure_deb < 10) {
    $heure_debut = "0".$heure_deb;
    }
    else {
    $heure_debut = $heure_deb;
    }
     
    $heure_finplanning = $heure_fin;
     
    if ($i%2) {
      $heure_debut .=":00:00"; 
      $heure_finplanning .=":30:00"; 
    }
    else 
    {
      $heure_debut .=":30:00"; 
      $heure_finplanning +=1; 
      $heure_finplanning .=":00:00"; 
    }
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
      $events = mysql_query($sql);
      while ($event = mysql_fetch_assoc($events)) 
      {
        if ($heure_debut == $event['heure_debut']) 
        { 
          echo "<td class='type".$event['type']."' rowspan='".$event['delai']."'>";
          echo '<strong>';
          echo $event['nom_client']."</strong> (".$event['designation'].")";
          $bla = $event['delai'];
        }
        else 
        {
          if ($bla > 2) { $bla -=1; }
          else { echo "<td></td>"; }
        }
      }
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
      $events1 = mysql_query($sql1);
      while ($event1 = mysql_fetch_assoc($events1)) 
      {
        if ($heure_debut == $event1['heure_debut']) 
        { 
          echo "<td class='type".$event1['type']."' rowspan='".$event1['delai']."'>";
          echo '<strong>';
          echo $event1['nom_client']."</strong> (".$event1['designation'].")";
          $bla1 = $bla + $event['delai'];
        }
        else 
        {
          if ($bla1 > 2) { $bla1 -=1; }
          else { echo "<td></td>"; }
        }
      }
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
      $events2 = mysql_query($sql2);
      while ($event2 = mysql_fetch_assoc($events2)) 
      {
        if ($heure_debut == $event2['heure_debut']) 
        { 
          echo "<td class='type".$event2['type']."' rowspan='".$event2['delai']."'>";
          echo '<strong>';
          echo $event2['nom_client']."</strong> (".$event2['designation'].")";
          $bla2 = $bla1 + $event2['delai'];
        }
        else 
        {
          if ($bla2 > 2) { $bla2 -=1; }
          else { echo "<td></td>"; }
        }
      }
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
      $events3 = mysql_query($sql3);
      while ($event3 = mysql_fetch_assoc($events3)) 
      {
        if ($heure_debut == $event3['heure_debut']) 
        { 
          echo "<td class='type".$event3['type']."' rowspan='".$event3['delai']."'>";
          echo '<strong>';
          echo $event3['nom_client']."</strong> (".$event3['designation'].")";
          $bla3 = $bla2 + $event3['delai'];
        }
        else 
        {
          if ($bla3 > 2) { $bla3 -=1; }
          else { echo "<td></td>"; }
        }
      }
     
     
      echo "</td>";
      /*vont rentrer ici tous les évènements du jour courant*/
      $events4 = mysql_query($sql4);
      while ($event4 = mysql_fetch_assoc($events4)) 
      {
        if ($heure_debut == $event4['heure_debut']) 
        { 
          echo "<td class='type".$event4['type']."' rowspan='".$event4['delai']."'>";
          echo '<strong>';
          echo $event4['nom_client']."</strong> (".$event4['designation'].")";
          $bla4 = $bla3 + $event4['delai'];
        }
        else 
        {
          if ($bla4 > 2) { $bla4 -=1; }
          else { echo "<td></td>"; }
        }
      }
     
      echo "</td></tr>";


    Alors suite au précédent post, j'ai mis en place une condition sur 5 colonnes... le problème apparait quand plusieurs évènements à la même heure à des jours différents !!!!

    Je vous envoie une petit image...
    J'ai essayé de bidouiller ma condition mais je vois pas trop là...

  8. #8
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Salut,
    Je pense que avec ceci, ton code devrait fonctionner, avec la bonne initialisation de $bla :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($heure_debut == $event['heure_debut']) 
        { 
          echo "<td class='type".$event['type']."' rowspan='".$event['delai']."'>";
          echo '<strong>';
          echo $event['nom_client']."</strong> (".$event['designation'].")";
          $bla += $event['delai']; //ici la modif !!
        }
    Z.

Discussions similaires

  1. [XL-2000] compteur et condition pour sélectionner les cases d'un tableau
    Par Rrrroh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/08/2010, 20h04
  2. [MySQL] Afficher les valeurs d'un tableau pour des cases à cocher
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/12/2008, 16h45
  3. Problème avec les cases d'un groupe d'option.
    Par auriolbeach dans le forum Access
    Réponses: 2
    Dernier message: 01/10/2005, 07h33
  4. Pb avec les cases à cocher
    Par magic8392 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/03/2005, 16h49
  5. Pb avec les cases à cocher
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/03/2005, 13h44

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