Page 1 sur 1

Double boucle for (pour cellules de thead et cellules de tbody) inutile ou non ?

Posté : 27 mai 2015, 15:19
par Nino31290
Bonjour à tous,

Je réalise un calendrier hebdomadaire "dynamique". Dans les th de mon thead, les jours de la semaine s'affichent (générés par mon code avec une boucle for). Aucun problème.

<table><thead><tr>
code...
boucle qui affiche '<th>lundi 12 mai</th><th>mardi 13 mai</th>' etc...

puis je ferme ma boucle for ( } ) puis je ferme ma ligne (</tr>) puis je ferme </thead>

pour passer au tbody, j'ouvre une nouvelle ligne (<tbody><tr>)

puis je recommence la même boucle (ou presque) dans laquelle je veux cette fois-ci afficher le timestamp du jour de la même colonne pour écrire mes <td>mon timestamp</td>.

enfin je ferme ma deuxième boucle for ( } ) puis ma deuxième ligne (</tr></tbody></table>).

Ma question est la suivante : ai-je réélement besoin d'écrire deux fois la quasi "même" boucle entièrement ? Je suis persuadé qu'il y a un moyen plus simple mais je sèche.

Voici mon code :
<table border="1">

    <thead>
    	<tr>



<?php

$w = 22; // Pour la 7 ème semaine à rechercher
$y = 2015; // Pour la 7 ème semaine à rechercher
$NbJrs = 7 ; // Nombre de jours à afficher

///////////////////////////////// AFFICHAGE du thead ////////////////////////////////////////

for($i = 1; $i <= 365; $i++)
	{
		$week = date("W", mktime(0, 0, 0, 1, $i, $y));
		if($week == $w)
			{
		
				for($d = 0; $d < $NbJrs; $d++)
					{
						$MonMKTIME = mktime(0, 0, 0, 1, $i+$d, $y);
						$MaDate = date("Y-m-d", $MonMKTIME);
						
						?>
						<th><?php echo $MaDate; ?></th>
                        <?php
					}
				break;
					}
	}
?>

		</tr>
    </thead>
    
    
    
    
    
    
    <tbody>
    	<tr>



<?php

///////////////////////////////// AFFICHAGE du tbody ////////////////////////////////////////

for($i = 1; $i <= 365; $i++)
	{
		$week = date("W", mktime(0, 0, 0, 1, $i, $y));
		if($week == $w)
			{
		
				for($d = 0; $d < $NbJrs; $d++)
					{
						$MonMKTIME = mktime(0, 0, 0, 1, $i+$d, $y);
						$MaDate = date("Y-m-d", $MonMKTIME);
						
						$TS = strtotime($MaDate);
						?>
						<td data-ts="<?php echo $TS; ?>"><?php echo $TS; ?></td>
                        <?php
					}
				break;
					}
	}
?>

		</tr>
    </tbody>
    
</table>
Si quelqu'un pouvait me répondre, ce serait très sympa !

Re: Double boucle for (pour cellules de thead et cellules de tbody) inutile ou non ?

Posté : 27 mai 2015, 15:25
par Saian
Salut si tu veux faire le tout en une boucle, il faut alors laisser tomber le tableau et faire plutôt avec d'autres balises (div, span, ul, li, au choix) et du float left.

EDIT
Enfin du peux garder le tableau mais dans ce cas oublie la notion de thead et tbody car dans chaque case tu devras mettre les 2 lignes (donc deux div ou autre).

Il y a aussi la possibilité de sortir les donnés au format json et de construire le tableau en javascript mais ça simplifie pas vraiment. ^^

Re: Double boucle for (pour cellules de thead et cellules de tbody) inutile ou non ?

Posté : 27 mai 2015, 17:57
par tof73
tu peux faire une seule boucle, mais au lieu d'écrire directement ce que tu veux afficher, tu mets le contenu du th dans une variable, celui du tbody dans une autre; et une fois sorti de la boucle, tu affiches tout.