C'est toi qui écrit les dates à la main dans le code que tu me montres donc je ne vois pas pourquoi tu ne peux pas les ecrire au format AAAA-MM-DD.
Version imprimable
C'est toi qui écrit les dates à la main dans le code que tu me montres donc je ne vois pas pourquoi tu ne peux pas les ecrire au format AAAA-MM-DD.
en uinversant cela ne change rien,pas d'affichage
Code:
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 $sth->execute(array(':j_debut'=>'2015-07-20',':j_fin'=>'2015-07-20')); while ($donnees = $sth->fetch(PDO::FETCH_ASSOC)) { $objDatedebut = date_create('2015-07-20'); $objDatefin = date_create('2015-07-20'); for( $date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { $tableau[$donnees['SALLE']][$date->format('Y-m-d')][] = $donnees['PRODUITS']; var_dump($tableau); } } ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <meta http-equiv="Refresh" content="10" > <title>Gestion des Salles</title> </head> <body> <form method="post" action=""> <table border="1" cellspacing="1" cellpadding="30"> <?php $objDatedebut = date_create('2015-07-20'); $objDatefin = date_create('2015-07-26'); $objDatedebut = date_create(); if ($objDatedebut->format('N') != 1) { $objDatedebut->modify('last monday');
Tu n'as plus le tableau du planning ?
voici le code:
Code:
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 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <meta http-equiv="Refresh" content="10" > <title>Gestion des Salles</title> </head> <body> <table border="1" cellspacing="1" cellpadding="30"> <?php $objDatedebut = date_create('2015-07-20'); $objDatefin = date_create('2015-07-26'); $objDatedebut = date_create(); if ($objDatedebut->format('N') != 1) { $objDatedebut->modify('last monday'); } $tblSalles = array( 0 => 'Salles', 1 => 'Salle 1', 2 => 'Salle 2', 3 => 'Salle 3', 4 => 'Salle 4', 5 => 'Salle 5', 6 => 'Cours', 7 => 'Vestiaires' ); foreach ($tblSalles as $key=>$Salle) { echo '<tr> <td>' . $Salle . '</td>'; for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { if ($key == 0) { $case = $date->format('y/m/d'); } else { $case = isset($tableau[$Salle][$date->format('Y-m-d')]) ? $tableau[$Salle][$date->format('Y-m-d')] : ''; } echo '<td>' . $case .'</td>'; } echo '</tr>'; } ?> </table> </body> </html>
Je voulais dire : tu n'as plus rien du tout en affichage ?
je n'ai rien qui s'affiche,j'ai peut être une indication,
ici le var_dump( $tableau); affiche bien les valeurs .Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 foreach ($tblSalles as $key=>$Salle) { echo '<tr> <td>' . $Salle . '</td>'; for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { if ($key == 0) { $case = $date->format('Y/m/d'); } else { $case = isset($tableau[$Salle][$date->format('Y-m-d')]) ? $tableau[$Salle][$date->format('Y-m-d')] : ''; var_dump( $tableau); var_dump( $case); } echo '<td>' . $case .'</td>';
par contre var_dump( $case); m'affiche
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 string '' (length=0) string '' (length=0) string '' (length=0) string '' (length=0) string '' (length=0) string '' (length=0) string '' (length=0) .....
Si tu retires la premiere partie concernant la base de données tu retrouves le planning ou non ?
juste pour faire un point avant modif de ce que tu me demandes visuellement j'ai bien mon tableau avec mes salles et les dates sur 7 jours.mais je n'ai aucun affichage a l'interieur correspondant au salles et dates.d'ou le post precedent pour te montrer que $case est vide donc il affiche rien.
Exprime bien ce que tu obtiens au moins, "pas d'affichage" ca n'est pas vraiment pareil que "les cases ne se remplissent pas".
Il faut une correspondance avec le libellé dans le base de donnée ; tu peux utiliser la clef du tableau :
Code:
1
2
3
4
5
6
7
8
9
10 $tblSalles = array( 0 => 'Salles', 'Salle_1' => 'Salle 1', 'Salle_2' => 'Salle 2', 'Salle_3' => 'Salle 3', 'Salle_4' => 'Salle 4', 'Salle_5' => 'Salle 5', 'Cours' => 'Cours', 'Vestiaires' => 'Vestiaires' );
Code:$case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : '';
Mais bon comme je te l'ai suggéré tout au début, une table de reference des salles serait la bonne solution.Code:$tableau[$donnees['SALLE']][$date->format('Y-m-d')] = $donnees['PRODUITS'];
bon, comme l'affichage est vide malgré la modification apportée, j'ai crée une table s'appelant SALLES avec 2 champs (id, salles)mais comment inseres tu la 2 eme table dans la requête sachant qu'il faut en condition les dates jour début et jour fin qui sont sur la première table?
Tu pourrais me faire un export de ta table de donnée, ça sera plus facile.
voici les tables salles et planning
On en revient au tout début : ou est la salle dans la table planning ?
Le code fonctionne bien sous reserve evidemment d'avoir une colonne SALLE
Code:
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 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <meta http-equiv="Refresh" content="10" > <title>Gestion des Salles</title> </head> <body> <table border="1" cellspacing="1" cellpadding="30"> <?php $sth=$pdo->prepare("SELECT SALLE, PRODUITS, JOUR_DEBUT, JOUR_FIN FROM planning WHERE SALLE IN ('Salle_1','Salle_2','Salle_3','Salle_4','Salle_5','Cours','Vestiaires') AND JOUR_DEBUT <=:j_fin AND JOUR_FIN >=:j_debut"); $sth->execute(array(':j_debut'=>'2015-07-20',':j_fin'=>'2015-07-20')); while ($donnees = $sth->fetch(PDO::FETCH_ASSOC)) { $objDatedebut = date_create($donnees['JOUR_DEBUT']); $objDatefin = date_create($donnees['JOUR_FIN']); for( $date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { $tableau[$donnees['SALLE']][$date->format('Y-m-d')] = $donnees['PRODUITS']; } } $objDatedebut = date_create('2015-07-20'); $objDatefin = date_create('2015-07-26'); $objDatedebut = date_create(); if ($objDatedebut->format('N') != 1) { $objDatedebut->modify('last monday'); } $tblSalles = array( 'Salles' => 'Salles', 'Salle_1' => 'Salle 1', 'Salle_2' => 'Salle 2', 'Salle_3' => 'Salle 3', 'Salle_4' => 'Salle 4', 'Salle_5' => 'Salle 5', 'Cours' => 'Cours', 'Vestiaires' => 'Vestiaires' ); var_dump($tableau); foreach ($tblSalles as $key=>$Salle) { echo '<tr> <td>' . $Salle . '</td>'; for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { if ($key === 'Salles') { $case = $date->format('d/m/Y'); } else { $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : ''; } echo '<td>' . $case .'</td>'; } echo '</tr>'; } ?> </table> </body> </html>
En fait j'ai enlevé le champ salle de la table planning,donc je doit la remettre avec toutes les salles
après avoir rajouter la colonne salle dans ma table planning et avoir apporte les modifications que tu m'as suggère via ton code je me retrouve dans le même cas de figure, avec les cases vides. Effectivement le var_dump( $tableau); affiche bien les valeurs correspondantes du tableau. D'autre part j'ai modifié une ligne du code car je n'avais plus les dates de la semaine.
enCode:if ($key === 'Salles') {
via cette partie de code je joint une capture d'écranCode:if ($key == 'Salles') {
Pièce jointe 183572Code:
1
2
3
4
5
6
7
8
9 if ($key == 'Salles') { $case = $date->format('d/m/Y'); } else { $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : 'vide'; } echo '<td>' . $case .'</td>';
as-tu bien repris le code que je t'ai donné ?
Le modification if ($key === 'Salles') { était dedans
quand je suis dans ce cas de figure voici l'affichage du tableau (mon tableau affiche vide partout ,je n'ai plus les dates
Pièce jointe 183610Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 foreach ($tblSalles as $key=>$Salle) { echo '<tr> <td>' . $Salle . '</td>'; for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) { if ($key === 'Salles') { $case = $date->format('d/m/Y'); } else { $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : 'vide'; } echo '<td>' . $case .'</td>'; } echo '</tr>'; } ?>
Le code que je t'ai donné fonctionne (en remettant la connexion à la base de donnée) avec la table planning que je t'ai donné en ajoutant seulement la colonne "SALLE" donc si ça ne fonctionne pas chez toi c'est que tu as mal recopié quelque chose.
c'est incomprehensible car j'ai fait un copier collé de ton code ,remis la colonne SALLE dans la table planning et pas le résultat que tu as obtenu,j'ai retrouvé mes dates de la semaine, mais mes case affiche vide
as tu obtenu des valeurs venant de la table correspondant a la salle et a la date?
Que donne le var_dump($tableau) ?