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.
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 : 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 $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');
voici le 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 <!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 : 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 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part $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 : Sélectionner tout - Visualiser dans une fenêtre à part $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 : 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 <!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.
en
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ($key === 'Salles') {
via cette partie de code je joint une capture d'écran
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ($key == 'Salles') {
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 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?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager