- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Non pas de tableau .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <div id="ColonneGauche" class="cadre"> Pas de données à afficher </div>
ce n'est pas possible que $data perde ses données comme ça par magie. Cela peut arriver si par hasard tu faisais appel à une variable $data dans le script inclus 'menu.php'.
Vérifie stp.
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Très juste, c'est ça !!! Je modifie...
C'est bon, le problème venait de là, j'avais aussi une variable data.
Me champs se completent bien, sauf pour les listes déroulantes. Elles comportent le bon nombre de ligne, mais il n'y a pas de texte.
Le problème doit venir de là :
Et il y a la même chose pour les animateurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <option value="{$hsc($value)}"{$is_selected}>{$hsc($inner_html)}</option>
Les double quotes doivent poser problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $anim[] = $build_option('animateur', $row['loginName'], "{$row['lastName']} {$row['firstName']} ({$row['loginName']})");
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Je dois partir à midi, repas de famille ...
Je t'ai répondu au post #24.
Voilà yapuka essayer avec ceci :
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220 <?php // fonction d'échappement pour le rendu $hsc = function($p) { return htmlspecialchars($p, ENT_QUOTES); }; $render = function($p) use ($hsc) { echo $hsc($p); }; $data = array(); if (isset($_GET['activ'])) { $sql = "SELECT * FROM Activite WHERE id_act = '".mysql_real_escape_string($_GET['activ'])."'"; $exec = mysql_query($sql) or die(mysql_error()); $data = mysql_fetch_assoc($exec); $url = 'Trait_Modif_activite.php?activ='.$_GET['activ']; /* FACTORISATION DU RENDU DU CODE POUR LA LISIBILITÉ */ // fonction case cochée pour la fréquence $checked = function($p) use ($data) { echo (stripos($data['frequence'], $p) !== false) ? 'checked="checked"' : ''; }; // fonction pour les zones de liste qui return une ligne <option></option> entièrement formatée $build_option = function($key, $value, $txt = null) use ($data, $hsc) { $inner_html = ($txt === null) ? $value : $txt; $is_selected = ($data[$key] === $value) ? ' selected="selected"' : ''; return <<<HTML <option value="{$hsc($value)}"{$is_selected}>{$hsc($inner_html)}</option> HTML; }; // fonction pour les zones de liste qui echo une ligne <option></option> entièrement formatée $sel_option = function($key, $value, $txt = null) use ($build_option) { echo $build_option($key, $value, $txt); }; // liste des animateurs $anim = array(); $sql = 'SELECT * FROM Member WHERE TypeCompte = "animateur" ORDER BY lastName'; $exec = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_assoc($exec)) { $anim[] = $build_option('animateur', $row['loginName'], "{$row['lastName']} {$row['firstName']} ({$row['loginName']})"); } } ?> <body> <div id="wrapper"> <div id="header"><?php include 'menu.php' ?></div> <div id="content"> <div id="ColonneGauche" class="cadre"> <?php if (empty($_SESSION['user']) || ($_SESSION['user']['type'] === 'user')): ?> Vous n'etes pas autorisé à utiliser ce service <?php elseif (empty($data)): ?> Pas de données à afficher <?php else: ?> <h1>Administration ... (session : <?php $render($_SESSION['user']['prenom']) ?>)</h1> <h2>Modifier l'activité : <?php $render($data['activite']) ?></h2> <form method="post" action="<?php echo $url ?>"> <table class="none"> <tr> <td class="bold_right">ID</td> <td><input id="id" type="text" name="id" value="<?php $render($data['id_act']) ?>" size="43" readonly="readonly" /></td> </tr> <tr> <td class="bold_right">Date d'ajout</td> <td><input id="DateAjout" type="text" name="DateAjout" value="<?php $render($data['DateAjout']) ?>" size="43" readonly="readonly" /></td> </tr> <tr> <td class="bold_right">Nom de l'activité</td> <td><input id="activite" type="text" name="activite" value="<?php $render($data['activite']) ?>" size="43" /></td> </tr> <tr> <td class="bold_right">Catégorie</td> <td><input id="categorie" type="text" name="categorie" value="<?php $render($data['categorie']) ?>" size="43" /></td> </tr> <tr> <td class="bold_right">Sous-Catégorie</td> <td><input id="sscategorie" type="text" name="sscategorie" value="<?php $render($data['sscategorie']) ?>" size="43" /></td> </tr> <tr> <td class="bold_right">Description</td> <td> <textarea cols="80" class="ckeditor" id="editeur" name="editeur" rows="50"><?php $render($data['description']) ?></textarea> <script type="text/javascript">CKEDITOR.replace( 'editeur' );</script> </td> </tr> <tr> <td class="bold_right">Frequence</td> <td> <input type="checkbox" name="frequence[]" value="Annee" <?php $checked('Annee') ?> />Toute l'année <input type="checkbox" name="frequence[]" value="Vacances" <?php $checked('Vacances') ?> />Vacances <input type="checkbox" name="frequence[]" value="Occasionnel" <?php $checked('Occasionnel') ?> />Occasionnel </td> </tr> <tr> <td class="bold_right">Plage</td> <td> <select name="plage" id="plage"> <?php $sel_option('plage', 'Matin'); $sel_option('plage', 'Après-midi'); $sel_option('plage', 'Soirée'); $sel_option('plage', 'Journée'); ?> </select> </td> </tr> <tr> <td class="bold_right">Planning</td> <td> <select name="planning" id="planning"> <?php $sel_option('planning', 'Lundi'); $sel_option('planning', 'Mardi'); $sel_option('planning', 'Mercredi'); $sel_option('planning', 'Jeudi'); $sel_option('planning', 'Vendredi'); $sel_option('planning', 'Samedi'); $sel_option('planning', 'Dimanche'); $sel_option('planning', 'Plusieurs Jours'); ?> </select> </td> </tr> ' <tr> <td class="bold_right">Public</td> <td> <select name="public" id="public"> <?php $sel_option('public', 'Enfants'); $sel_option('public', 'Adolescents'); $sel_option('public', 'Adultes'); $sel_option('public', 'Tous'); ?> </select> </td> </tr> <tr> <td class="bold_right">Lieu</td> <td> <select name="lieu" id="lieu"> <?php $sel_option('lieu', 'Harpe', 'Ferme de la Harpe'); $sel_option('lieu', 'Parc', 'Maison du Parc'); $sel_option('lieu', 'Beauregard'); $sel_option('lieu', 'Autres') ?> </select> </td> </tr> <tr> <td class="bold_right">Cours</td> <td> <select name="cours" id="cours"> <?php $sel_option('cours', 'Particulier'); $sel_option('cours', 'Collectif'); ?> </select> </td> </tr> <tr> <td class="bold_right">Animateur</td> <td> <select name="animateur" id="animateur"> <?php echo implode("\n", $anim) ?> </select>Uniquement le prénom de l'animateur apparaitra sur le site </td> </tr> <tr> <td class="bold_right">Tarif</td> <td> <select name="tarif" id="tarif"> <?php $sel_option('tarifs', 'moins de 30 '); $sel_option('tarifs', 'de 30 à 100 '); $sel_option('tarifs', 'de 100 à 250 '); $sel_option('tarifs', 'supérieur à 250 '); ?> </select> </td> </tr> <tr> <td class="bold_right">Photo</td> <td><input type="text" name="photo" value="<?php $render($data['Photo']) ?>" size="43" id="photo"></td> </tr> <tr> <td class="bold_right">Visible sur le site</td> <td> <select name="visible" id="visible"> <?php $sel_option('Visible', 'O'); $sel_option('Visible', 'N'); ?> </select> </td> </tr> <tr> <td class="bold_right">News</td> <td> <textarea cols="80" class="ckeditor" id="news" name="news" rows="50"><?php $render($data['news']) ?></textarea> <script type="text/javascript">CKEDITOR.replace( 'news' );</script> </td> </tr> </table> </form> <?php endif ?> </div> <div id="ColonneDroite" class="cadre"><?php include 'colonneDroite.php' ?></div> </div> <div id="footer"><?php include 'footer.php' ?></div> </div> </body> </html>
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
ça fonctionne maintenant pour les listes déroulantes.
J'ai mon champs news à la fin de la page qui n'affiche plus rien, alors qu'avec le code d'avant, ça fonctionnait. Etrange, pourtant rien semble n'avoir changé.
Recopie mon code du post précédent, j'avais laissé trainé un $hsc avec news...
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Oui j'ai regardé sur le champ description, ou tu as mis un $render...
ça fonctionne.
Je ne suis pas là cet aprem. Je regarde le code plus en détails ce soir...
En tout cas, merci pour ton aide
Maintenant ça va etre à moi de bosser
Encore une question, est-il possible avec ton code de l'utiliser si je veux mettre des cases à cocher pour d'autres champs ? et sans devoir recopier cette fonction pour chaque champs ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // fonction case cochée pour la fréquence $checked = function($p) use ($data) { echo (stripos($data['frequence'], $p) !== false) ? 'checked="checked"' : ''; };
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Ok merci, ça fonctionne !
[EDIT] : Finalement non, si j'ai plusieurs valeurs checked="checked", ça ne fonctionne pas.
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 // fonction pour les zones de liste qui return une ligne <option></option> entièrement formatée $build_option_chkbx = function($key, $value, $txt = null) use ($data, $hsc) { $inner_html = ($txt === null) ? $value : $txt; $is_checked = ($data[$key] === $value) ? ' checked="checked"' : ''; return <<<HTML <input type="checkbox" name="{$hsc($key)}[]" value="{$hsc($value)}"{$is_checked}>{$hsc($inner_html)} HTML; }; // fonction pour les cases à cocher qui echo une ligne entièrement formatée $sel_option_chkbx = function($key, $value, $txt = null) use ($build_option_chkbx) { echo $build_option_chkbx($key, $value, $txt); };
Y a de l'idée mais ça serait mieux comme ça :
et ensuite 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 $build_checkbox = function($data_key, $value, $txt = null) use ($data, $hsc) { $inner_html = ($txt === null) ? $value : $txt; $is_checked = (stripos($data[$data_key], $value) === false) ? '' : ' checked="checked"'; return <<<HTML <input type="checkbox" name="{$data_key}[]" value="{$hsc($value)}" {$is_checked} />{$hsc($inner_html)} HTML; }; $helper_checkbox = function($data_key, $value, $txt = null) use ($build_checkbox) { echo $build_checkbox($data_key, $value, $txt); };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <tr> <td class="bold_right">Frequence</td> <td> <?php $helper_checkbox('frequence', 'Annee', "Toute l'année"); $helper_checkbox('frequence', 'Vacances'); $helper_checkbox('frequence', 'Occasionnel'); ?> </td> </tr>
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Il ne manquait que quelques subtilités...
Je veux faire la même chose pour les animateurs :
Je remplace par, mais ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // liste des animateurs $anim = array(); $sql = 'SELECT * FROM Member WHERE TypeCompte = "animateur" ORDER BY lastName'; $exec = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_assoc($exec)) { //$anim[] = $build_option('animateur', $row['loginName'], "{$row['lastName']} {$row['firstName']} ({$row['loginName']})"); }
Il doit pourtant bien me générer toutes les lignes input ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $anim[] = $helper_checkbox('animateur', $row['loginName'], "{$row['lastName']} {$row['firstName']} ({$row['loginName']})"); }
Et je les affiche toujours avec ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <?php echo implode("\n", $anim) ?>
Ton problème vient du fait que $build_checkbox ne travaille que sur les données de $data (les activités) et pas celle des animateurs
regardes :Il faut encore généraliser d'un cran la fonction $build_checkbox, tu fais un essai ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $build_checkbox = function($data_key, $value, $txt = null) use ($data, $hsc)
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Je ne suis pas sur avec le use :
et pour la requete :
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 // fonction pour les zones de liste qui return une ligne entièrement formatée $build_checkbox = function($req, $key, $value, $txt = null) use ($req, $hsc) { $inner_html = ($txt === null) ? $value : $txt; $is_checked = (stripos($req[$data_key], $value) === false) ? '' : ' checked="checked"'; return <<<HTML <input type="checkbox" name="{$key}[]" value="{$hsc($value)}" {$is_checked} />{$hsc($inner_html)} HTML; }; // fonction pour les cases à cocher qui echo une ligne entièrement formatée $helper_checkbox = function($req, $key, $value, $txt = null) use ($build_checkbox) { echo $build_checkbox($req, $key, $value, $txt); };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // liste des animateurs $anim = array(); $sql = 'SELECT * FROM Member WHERE TypeCompte = "animateur" ORDER BY lastName'; $exec = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_assoc($exec)) { $anim[] = $helper_checkbox('row', 'animateur', $row['loginName'], "{$row['lastName']} {$row['firstName']} ({$row['loginName']})"); }
Après réflexion, je n'utiliserais pas de cases à cocher pour les animateurs. Du moins pas avec le helper qui a été adapté à ton bout de code. La fonction $build_checkbox va devenir assez complexe pour la généraliser et malgré tout sera limité à ton bout de code. Bref, pas très utile.
- PDO++ : Une nouvelle façon d'utiliser PDO. Billet de blog || Code source
- PhpEcho : Un moteur de rendu en une seule classe ! Nouvelle version (release 2.3.2) publiée le 18/04/2020 : Billet de blog || Code source
Ah dommage, car une activité peut-etre animé par plusieurs animateurs...
Tanpis, je me contenterai de mettre l'animateur principal...
Merci pour ton aide. Je vais adapter ce code à mes autres pages.
Autrement, petite question, comment je peux faire pour recuperer toutes les datas de l'utilisateur connecté en variable de session.
$_SESSION[user][nom]=...
$_SESSION[user][prenom]=...
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