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

Langage PHP Discussion :

[Tableaux] Problème dans ma boucle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Par défaut [Tableaux] Problème dans ma boucle
    Bonjour,

    Je souhaite que les cases d'une colonne de mon tableau soit regroupées selon une condition (durée d'une réservation).

    Si la durée est de 1h alors le rowspan sera de 4, une durée de 2h30, le rowspan sera de 10 ...

    Je rencontre certains problème avec le code que j'ai pour l'instant, et ca m'affiche un tableau bizarre, de plus mes liens d'insertion ne marchent plus ...

    Je vous montre mon bout de code :
    Index.php:
    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
     
    <td bgcolor='<? echo $row4['couleur_statut']; ?>'
    <?		
    	require('rqt.php');
     
    while ($dur <3600) {
     
    $i = $i+1;
    $dur = $dur+15;
     
    		if ($dur4==$dur) {
    ?> rowspan='<? echo $i; ?>'>
    <?
    		echo "<font size='-3'><small><center>";
     
                    }
    }
    rqt.php :


    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
    <?	
    $dur1  = $row1['duree'];
    $pt = ':';
    $compt = substr_count($dur1, $pt);
    if ($compt>0) {
     
    $dur2 = explode(":", $dur1);
    $dur_h = $dur2[0];
    $dur_m = $dur2[1];		
    $dur3 = $dur_h*60;
    $dur4 = $dur3+$dur_m;
    }
    	else {
    	$dur4=$dur1;
    	}
    $dur = 0;
    $i = 0;
    ?>

    Et voila ce que ca me donne :


  2. #2
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Salut,

    Je comprends pas pourquoi tu fais un rowspan="$i", ça veut dire qu'a chaque tour tu auras rowspan 1, 2, 3, 4, 5...
    C'est pas logique tu veux 4 et 10 non? (Et puis faut voir la tête du tableau après...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Par défaut
    Je veux un rowspan si il ya une réservation existante sur la page horaire et en fonction de sa durée je veux un rowspan d'une certaine taille.

    Si il n'y a pas de réservation mon rowspan sera de 0 ...

    Le tableau marche tres bien normalement, il fait cette tete uniquement depuis que j'ai créer ma boucle et ma condition ...

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    En fait je crois que c'est pas possible de comprendre ton code sans comprendre ce qu'il y a autour.
    Pourquoi $i+1? Ca veut dire que la condition tombe pile sur i=10 ou i=4?
    Et pourquoi encore $dur + 15?

    On peut voir le code du tableau, comment tu le contruis autour?
    La je vois pas trop

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Par défaut
    J'ai regardé mon code entre temps et j'ai fait quelque légères modifs.

    Mon problème viens du fait que à chaque fois que j'ajoute une réservation, à la droite de mon tableau ca me rajoute une colonne avec autant de cases que je fais mon rowspan ...

    En fait $dur +15 c'est le nombre de minutes, les réservations se font sur des crénaux de 15 minutes minimum. On peut en faire de 15 minutes à 5h45 maximum.

    Donc ma boucle en gros veut dire :
    Tant que ma variable $dur n'est pas égale à la durée de la réservation on lui rajoute 15 et on rajoute 1 à $i .

    Imaginons une réservation de 1h

    La boucle va se stopper qd $dur sera egal à $dur4, donc à ce moment la, i aura poura valeur 4, et donc mon rowspan sera de 4
    Et vu que dans mon tableau une case correspond à 15 minutes, la réservation equivaudra bien à 4 cases donc 1 heure.

    Bon j'ai été long pour pas expliquer grand chose, mais j'espere que tu aura compris le système comme ca.

    Je met le code de ma page qd meme pour mieux que tu comprene

    index.php
    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
     
    <table width='100%' border=1 frame=void><tr><td></td>";
    // bordercolor='#000066'
     
    affichage_formateur();
     
     
    // on definit le temps a 8 heures
    $heure = mktime(7,45);
    $apres = date("H:i",$heure);
     
    // 44 correspond au nombre de lignes pour arriver a 19h00	
    while($apres<='18:45') {
     
    // on ajoute 15 minutes
    $heure+=900;
    $apres = date("H:i",$heure);
     
    // Affichage des heures sur la gauche du tableau ( de 8h à 19h )
      echo "<tr><td bgcolor='#99CCFF'><center><br><small>$apres</small><br></center></td>";
     
      $sql = "select num_formateur, nom_formateur, prenom_formateur, statut_formateur from formateur order by num_formateur";
      $result = mysql_query($sql);
     
    	while($row = mysql_fetch_array($result)) {
     
    	// Récupération de la table reservation	
    		$sql1 = "select * from reservation where num_formateur = " . $row['num_formateur'] . " and heure_debut = '" . $apres . "' and date = '" . $date_resa . "'"; 
    		$result1 = mysql_query($sql1);
    		$row1 = mysql_fetch_array($result1);
     
    		$sql4 = "select couleur_statut from statut where num_statut = '" . $row1['num_statut'] . "'"; 
    		$result4 = mysql_query($sql4);
    		$row4 = mysql_fetch_array($result4);
     
    ?>
    		<td bgcolor='<? echo $row4['couleur_statut'] . "'";
    	require('rqt.php');
     
    	while (($dur!=$dur4) && ($dur<3600)) {
    		$i = $i+1;
    		$dur = $dur+15;
    	}
     
    		if ($dur4==$dur) {
    echo "rowspan='" . $i . "'>";
    echo "<font size='-3'><small><center>";
    		}	
    		if ($dur4!=$dur) {
    echo "<font size='-3'><small><center>";
    		}	
     
    // Affichage des informations dans les cases correspondantes 
    		if ($row1=$row1) { 
    			$sql2 = "select nom_type from reservation r, type_reservation t where r.num_type = t.num_type and r.num_type= " . $row1['num_type'] . ""; 
    			$result2 = mysql_query($sql2);
    			$row2 = mysql_fetch_array($result2);
    			$sql3 = "select valeur_coeff from reservation r, coefficient c where r.num_coeff = c.num_coeff and r.num_coeff= " . $row1['num_coeff'] . ""; 
    			$result3 = mysql_query($sql3);
    			$row3 = mysql_fetch_array($result3);			
    			$sql4 = "select nom_statut, description_statut from reservation r, statut s where r.num_statut = s.num_statut and r.num_statut= " . $row1['num_statut'] . ""; 
    			$result4 = mysql_query($sql4);
    			$row4 = mysql_fetch_array($result4);	
     
    ?>
    <a 
    	class="lien3"
    	href="#"
    	title="En savoir plus ..."
    	onclick="window.open ('popup.php?formateur=<?php echo( $row['nom_formateur'] ); ?>&statut=<?php echo( $row4['description_statut'] ); ?>&coeff=<?php echo( $row3['valeur_coeff'] ); ?>&type=<?php echo( $row2['nom_type'] ); ?>&code=<?php echo( $row1['code_resa'] ); ?>&heure_debut=<?php echo( $row1['heure_debut'] ); ?>&date=<?php echo( $row1['date'] ); ?>&duree=<?php echo( $row1['duree'] ); ?>&heure_fin=<?php echo( $row1['heure_fin'] ); ?>&hc=<?php echo( $row1['heure_compta'] ); ?>&cree_par=<?php echo( $row1['cree_par'] ); ?>&description=<?php echo( $row1['description_resa'] );?>&observation=<?php echo( $row1['observation_resa'] ); ?>'
    			  , 'popup'
    			  , 'width=550,height=305,top=300,left=400'
    			 ); return false;"
    >
     
    <?	
     
    echo "Code :  <font color=red>" . $row1['code_resa'] . "</font> - Type : <font color=red>" . $row2['nom_type'] . "</font> <br> 
     Durée  <font color=red>: " . $row1['duree'] . "</font> - Coeff  <font color=red>: " . $row3['valeur_coeff']." </font><br>Heures Comptabilisées : <font color=red>" . $row1['heure_compta'] . "</font>
    </a>";
     
    	}
    			else {
    if(isset($_SESSION['nom']))
    {
    	if ($_SESSION['acces'] == 10) {
    		echo "<a class='lien3' href='reservation.php?formateur=" . $row['nom_formateur'] . "&heure_debut=" . $apres . "&date=" . $date_resa . "'>Insérer</a></center></small></font></td>";
    			}
     
    }
    	}
    	}
     
    // Affichage des heures sur la gauche du tableau ( de 8h à 19h )
      echo "<td bgcolor='#99CCFF'><center><br><small>$apres</small><br></center></td>";
     
    	echo '</tr>';
     
    }
    echo "</table><table width='40%' align='center'><tr><td width='10%'><b><font color='#FFFF00' size='-1'> Prévu : Jaune </font></td><td width='10%'><b><font color='#66CCFF' size='-1'>Confirmé : Bleu </font></td><td width='10%'><b><font color='#00FF00 ' size='-1'>Réalisé : Vert </font></b></td></tr><tabble></body></html>";
    ?>

    rqt.php :
    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
     
    <?	
    $dur1  = $row1['duree'];
    $pt = ':';
    $compt = substr_count($dur1, $pt);
    if ($compt>0) {
     
    $dur2 = explode(":", $dur1);
    $dur_h = $dur2[0];
    $dur_m = $dur2[1];		
    $dur3 = $dur_h*60;
    $dur4 = $dur3+$dur_m;
    }
    	else {
    	$dur4=$dur1;
    	}
    $dur = 0;
    $i = 0;
     
    ?>

    Je vous joinds encore un impression écran pour vous montrer le décalage que mon rowspan entraine ( et c'est ca mon problème ! )

  6. #6
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    J'ai trouvé deux bugs dans ton code:

    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
    <table width='100%' border=1 frame=void><tr><td></td>";
    // bordercolor='#000066'
    
    affichage_formateur();
    
    
    // on definit le temps a 8 heures
    $heure = mktime(7,45);
    $apres = date("H:i",$heure);
    
    // 44 correspond au nombre de lignes pour arriver a 19h00	
    while($apres<='18:45') {
    
    // on ajoute 15 minutes
    $heure+=900;
    $apres = date("H:i",$heure);
    
    // Affichage des heures sur la gauche du tableau ( de 8h à 19h )
      echo "<tr><td bgcolor='#99CCFF'><center><br><small>$apres</small><br></center></td>";
    
      $sql = "select num_formateur, nom_formateur, prenom_formateur, statut_formateur from formateur order by num_formateur";
      $result = mysql_query($sql);
      		
    	while($row = mysql_fetch_array($result)) {
    
    	// Récupération de la table reservation	
    		$sql1 = "select * from reservation where num_formateur = " . $row['num_formateur'] . " and heure_debut = '" . $apres . "' and date = '" . $date_resa . "'"; 
    		$result1 = mysql_query($sql1);
    		$row1 = mysql_fetch_array($result1);
    
    		$sql4 = "select couleur_statut from statut where num_statut = '" . $row1['num_statut'] . "'"; 
    		$result4 = mysql_query($sql4);
    		$row4 = mysql_fetch_array($result4);
    	
    ?>
    		<td bgcolor='<? echo $row4['couleur_statut'] . "'"; // Note: ici tu ouvres un <td>
    	require('rqt.php');
    	
    	while (($dur!=$dur4) && ($dur<3600)) {
    		$i = $i+1;
    		$dur = $dur+15;
    	}
    	
    		if ($dur4==$dur) {
    echo "rowspan='" . $i . "'>";
    echo "<font size='-3'><small><center>";
    		}	
    		else {  // Petite modification
    echo "<font size='-3'><small><center>";
    		}	
    	
    // Affichage des informations dans les cases correspondantes 
    		if ($row1 == $row1) { // Pas = mais ==
    			$sql2 = "select nom_type from reservation r, type_reservation t where r.num_type = t.num_type and r.num_type= " . $row1['num_type'] . ""; 
    			$result2 = mysql_query($sql2);
    			$row2 = mysql_fetch_array($result2);
    			$sql3 = "select valeur_coeff from reservation r, coefficient c where r.num_coeff = c.num_coeff and r.num_coeff= " . $row1['num_coeff'] . ""; 
    			$result3 = mysql_query($sql3);
    			$row3 = mysql_fetch_array($result3);			
    			$sql4 = "select nom_statut, description_statut from reservation r, statut s where r.num_statut = s.num_statut and r.num_statut= " . $row1['num_statut'] . ""; 
    			$result4 = mysql_query($sql4);
    			$row4 = mysql_fetch_array($result4);	
    
    ?>
    <a 
    	class="lien3"
    	href="#"
    	title="En savoir plus ..."
    	onclick="window.open ('popup.php?formateur=<?php echo( $row['nom_formateur'] ); ?>&statut=<?php echo( $row4['description_statut'] ); ?>&coeff=<?php echo( $row3['valeur_coeff'] ); ?>&type=<?php echo( $row2['nom_type'] ); ?>&code=<?php echo( $row1['code_resa'] ); ?>&heure_debut=<?php echo( $row1['heure_debut'] ); ?>&date=<?php echo( $row1['date'] ); ?>&duree=<?php echo( $row1['duree'] ); ?>&heure_fin=<?php echo( $row1['heure_fin'] ); ?>&hc=<?php echo( $row1['heure_compta'] ); ?>&cree_par=<?php echo( $row1['cree_par'] ); ?>&description=<?php echo( $row1['description_resa'] );?>&observation=<?php echo( $row1['observation_resa'] ); ?>'
    			  , 'popup'
    			  , 'width=550,height=305,top=300,left=400'
    			 ); return false;"
    >
    
    <?	
    		
    echo "Code :  <font color=red>" . $row1['code_resa'] . "</font> - Type : <font color=red>" . $row2['nom_type'] . "</font> <br> 
     Durée  <font color=red>: " . $row1['duree'] . "</font> - Coeff  <font color=red>: " . $row3['valeur_coeff']." </font><br>Heures Comptabilisées : <font color=red>" . $row1['heure_compta'] . "</font>
    </a>"; //Ici tu ne fermes aucun <td>
    
    	}
    			else {
    if(isset($_SESSION['nom']))
    {
    	if ($_SESSION['acces'] == 10) {
    		echo "<a class='lien3' href='reservation.php?formateur=" . $row['nom_formateur'] . "&heure_debut=" . $apres . "&date=" . $date_resa . "'>Insérer</a></center></small></font></td>";
    // Tu fermes ici le <td> dans le cas d'un else
    			}
    
    }
    	}
    	}
    		
    // Affichage des heures sur la gauche du tableau ( de 8h à 19h )
      echo "<td bgcolor='#99CCFF'><center><br><small>$apres</small><br></center></td>";
    
    	echo '</tr>';
    
    }
    echo "</table><table width='40%' align='center'><tr><td width='10%'><b><font color='#FFFF00' size='-1'> Prévu : Jaune </font></td><td width='10%'><b><font color='#66CCFF' size='-1'>Confirmé : Bleu </font></td><td width='10%'><b><font color='#00FF00 ' size='-1'>Réalisé : Vert </font></b></td></tr><tabble></body></html>";
    ?>

Discussions similaires

  1. Problème dans une boucle
    Par Pitou5464 dans le forum Access
    Réponses: 5
    Dernier message: 11/08/2006, 14h51
  2. [Tableaux] Problème dans caddie
    Par dldstyle dans le forum Langage
    Réponses: 7
    Dernier message: 31/07/2006, 19h41
  3. [Tableaux] DELETE dans une boucle
    Par mikedimoi dans le forum Langage
    Réponses: 5
    Dernier message: 15/01/2006, 18h16
  4. Réponses: 5
    Dernier message: 24/12/2005, 15h40
  5. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42

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