Bonjour,

je suis confronter a un souci pour gérer une liste de checkbox

j arrive a récupérer les id et valeurs de la liste de chaque checkbox a créer

j arrive a récupérer le liste de ce qui est normalement coche

par contre si il y a plusieurs "checked" sa ne me met que le dernier

je vous poste le code du formulaire total(pour moi pas utile mais on sait jamais si il y a une piste sur ce problème avant les lignes concernées).

il s agit d un formulaire ou son générer d autre formulaires pour différentes tables(le for concernant $listeActivites permet de générer un Template vide que je récupère en JS pour cloner des formulaires vide et affiche la liste des activités créer derrière normalement cette partie la fonctionne même si le formulaire en question est pas encore complet)
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
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<section class="colonne">
 
    <?php
 
$mode = $_GET['mode'];
if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $uneFicheItv = FichesInterventionsManager::findById($id);
    $unLieu = LieuxManager::findById($uneFicheItv->getIdLieu());
    $uneOperation = OperationsManager::findById($uneFicheItv->getIdOperation());
    $unMesm = MesmManager::findById($uneOperation->getIdMesm());
    $unStatut = StatutsManager::findById($uneFicheItv->getStatutDemande());
    $listeActivites[] = new Activites();
    $listeActivites = array_merge($listeActivites,
        ActivitesManager::getActiviteByFiche($id));
} else {
    $uneFicheItv = new FichesInterventions();
    $unLieu = new Lieux();
    $unMesm = new Mesm();
    $uneOperation = new Operations();
    $unStatut = new Statuts();
    $listeActivites[] = new Activites();
}
$listeActions = ActionsManager::getList();
$listeCauses = CausesManager::getList();
$listeTypeMaint = TypesMaintenancesManager::getList();
 
$listeUser = UtilisateursManager::getListByRole(5);
$activites = '';
 
$formFicheItv = '<form action="index.php?page=ActionsFichesItv&mode=' . $mode . '" method="POST">';
switch ($mode) {
    case "ajouter":{
            $idFicheItvHidden = '<input value="" type= "hidden">';
            $idUserHidden = $currentUser->getIdUser();
            $disabled = '';
            $disabSta = '';
            $submit = '<button id="submit" class="bouton" type="submit" disabled><i class="fas fa-paper-plane"></i>&nbsp Ajouter</button><div class="mini"></div>';
            $activites = '';
            $role = RolesManager::findByid($currentUser->getIdRole());
            $demandeur = $role->getLibelleRole();
            $tel = $currentUser->getTelUser();
            $multiple = 'multiple size=10 class="selectMultiple"';
            $nameSta = 'idSta[]';
            $idSta = 'idSta';
            break;
        }
    case "modifier":{
            $idFicheItvHidden = '<input name= "idFicheIntervention" value="' . $uneFicheItv->getIdFicheIntervention() . '" type= "hidden">';
            $idUserHidden = $uneFicheItv->getIdUser();
            $nameSta = 'idStagiaire';
            $idSta = 'idStagiaire';
            $demandeur = $uneFicheItv->getDemandeur();
            $tel = $uneFicheItv->getTelDemandeur();
            $multiple = '';
            $disabSta = 'disabled';
            if ($currentUser->getIdRole() == 5) {
                $disabled = 'disabled';
                $disabledAct = '';
                $submit = '';
                $mode = 'details';
 
                if ($unStatut->getIdStatut() < 3) {
                    $activites = '<button id="ajoutAct" type="button" class="bouton"><i class="fas fa-edit"></i> &nbsp Ajouter un compte rendu</button><div class="mini"></div><button id="ajoutAct" type="button" class="bouton"><i class="fas fa-edit"></i> &nbsp Envoyer au formateur</button><div class="mini"></div>';
                }
            } else {
                $disabled = '';
                $disabledAct = 'disabled';
                $submit = '<div class="mini"></div><button class="bouton"><i class="fas fa-edit"></i> &nbsp Modifier</button><div class="mini"></div>';
                if ($unStatut->getIdStatut() > 2) {
                    $disabled = 'disabled';
                    $activites = '<button id="ajoutValid" type="button" class="bouton"><i class="fas fa-edit"></i> &nbsp Validation</button><div class="mini"></div>';
                    $submit = '';
                }
            }
            break;
        }
    case "details":{
            $idFicheItvHidden = '<input name= "idFicheIntervention" value="' . $uneFicheItv->getIdFicheIntervention() . '" type= "hidden">';
            $idUserHidden = $uneFicheItv->getIdUser();
            $nameSta = 'idStagiaire';
            $idSta = 'idStagiaire';
            $disabled = 'disabled';
            $disabSta = 'disabled';
            $disabledAct = 'disabled';
            $submit = "";
            $activites = '';
            $demandeur = $uneFicheItv->getDemandeur();
            $tel = $uneFicheItv->getTelDemandeur();
            $multiple = '';
            break;
        }
    case "supprimer":{
 
            $idFicheItvHidden = '<input name= "idFicheIntervention" value="' . $uneFicheItv->getIdFicheIntervention() . '" type= "hidden">';
            $idUserHidden = $uneFicheItv->getIdUser();
            $nameSta = 'idStagiaire';
            $idSta = 'idStagiaire';
            $disabled = 'disabled';
            $disabSta = 'disabled';
            $disabledAct = 'disabled';
            $submit = '<button class="bouton"><i class="fas fa-trash-alt"></i>&nbsp Supprimer</button><div class="mini"></div>';
            $activites = '';
            $demandeur = $uneFicheItv->getDemandeur();
            $tel = $uneFicheItv->getTelDemandeur();
            $multiple = '';
            break;
        }
}
echo $formFicheItv;
echo $idFicheItvHidden;
echo '<input name= "idUser" value="' . $idUserHidden . '" type= "hidden">
    <fieldset class="colonne">
    <legend>Intervenant</legend>';
 
if ($mode == "ajouter") {
    echo '<div> <h5 class="texteClair">Sélectionner un ou plusieurs stagiaires</h5></div>';
}
if ($disabSta == 'disabled') {
    echo '<input name= "idStagiaire" value="' . $uneFicheItv->getIdStagiaire() . '" type= "hidden">';
}
echo '<div>';
 
echo '<div class="info colonne ">
                <label class="titre" for="' . $nameSta . '">Nom et prénom de l\'intervenant :</label>
                <select name="' . $nameSta . '" id="' . $idSta . '" ' . $disabSta . ' ' . $multiple . '>';
 
if ($uneFicheItv->getIdStagiaire() == null) {
    echo '<option value="" SELECTED >Choisir une valeur</option>';
}
foreach ($listeUser as $unUser) {
    if ($unUser->getIdUser() == $uneFicheItv->getIdStagiaire()) {
        echo '<option value="' . $unUser->getIdUser() . '" SELECTED>' . $unUser->getNomUser() . ' ' . $unUser->getPrenomUser() . '</option>';
    } else {
        echo '<option value="' . $unUser->getIdUser() . '">' . $unUser->getNomUser() . ' ' . $unUser->getPrenomUser() . '</option>';
    }
}
 
echo '</select>
    </div>';
?>
 
        </div>
    </fieldset>
    <div class="espaceHor"></div>
    <fieldset class="colonne">
        <legend>Demande</legend>
        <div>
            <div class="info colonne ">
                <label class="titre" for="dateDemande">Date de la demande :</label>
                <input type="date" id="dateDemande" <?=$disabled;?> name="dateDemande" value="<?=$uneFicheItv->getDateDemande();?>" required>
            </div>
            <div class="info colonne">
                <label class="titre" for="idDegreUrgence">Degré d'urgence :</label>
                <?=optionSelectAvecFiltres($uneFicheItv->getIdLieu(), "DegresUrgence", "idDegreUrgence", "libelleDegreUrgence", $mode, "", [], false);?>
            </div>
        </div>
        <div>
            <div class="info colonne">
                <label class="titre" for="demandeur">Nom du demandeur :</label>
                <input type="text" id="demandeur" <?=$disabled;?> name="demandeur" value="<?=$demandeur;?>" required pattern="^[a-zA-ZÀ-ÖØ-öø-ÿ\- _.() ]+$">
            </div>
            <div class="info colonne">
                <label class="titre" for="telDemandeur">Téléphone du demandeur :</label>
                <input type="text" id="telDemandeur" <?=$disabled;?> name="telDemandeur" required pattern="^[0-9]{10}$" value="<?=$tel;?>">
            </div>
        </div>
        <div>
            <div class="info colonne">
                <label class="titre" for="descriptionDemande">Description de la demande :</label>
                <textarea type="textarea" id="descriptionDemande" <?=$disabled;?> name="descriptionDemande" required pattern="^[a-zA-Z0-9ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ_-\s]*"><?=$uneFicheItv->getDescriptionDemande();?></textarea>
            </div>
        </div>
        <input type="hidden" name="statutDemande" <?=$disabled;?> value="<?=$uneFicheItv->getStatutDemande();?>">
        <input type="hidden" name="validation" <?=$disabled;?> value="<?=$uneFicheItv->getValidation();?>">
        <input type="hidden" name="appreciation" <?=$disabled;?> value="<?=$uneFicheItv->getAppreciation();?>">
        <div>
            <div class="info colonne  ">
                <label class="titre" for="">Environnement :</label>
                <?=optionSelectAvecFiltres($unLieu->getIdEnv(), "Environnements", "idEnv", "typeEnv", $mode, ' class="filtreFicheItv"  data-serie=3  data-libelle="typeEnv"', [], false);?>
            </div>
            <div class="info colonne  ">
                <label class="titre" for="idLieu">Localisation :</label>
                <?=optionSelectAvecFiltres($unLieu->getIdLieu(), "Lieux", "idLieu", "nomLieu", $mode, ' class="filtreFicheItv"  data-serie=3  data-libelle="nomLieu"', ["idCentre" => [1, $currentCentre->getIdCentre()]], false);?>
            </div>
        </div>
        <div>
            <div class="info colonne  ">
                <label class="titre" for="">Blocs de Compétence :</label>
                <?=optionSelectAvecFiltres($unMesm->getIdBlocComp(), "BlocsCompetences", "idBlocComp", "numeroBlocComp,libelleBlocComp", $mode, ' class="filtreFicheItv"  data-serie=2  data-libelle="numeroBlocComp,libelleBlocComp"', [], false);?>
            </div>
            <div class="info colonne  ">
                <label class="titre" for="">MESM :</label>
                <?=optionSelectAvecFiltres($unMesm->getIdMesm(), "mesm", "idMesm", "numeroMesm,libelleMesm", $mode, 'class="filtreFicheItv"  data-serie=2  data-libelle="numeroMesm,libelleMesm"', [], false);?>
            </div>
        </div>
        <div>
            <div class="info colonne  ">
                <label class="titre" for="idOperation">Opération :</label>
                <?=optionSelectAvecFiltres($uneOperation->getIdOperation(), "Operations", "idOperation", "numeroOperation,intituleOperation", $mode, 'class="filtreFicheItv"  data-serie=2 data-libelle="numeroOperation,intituleOperation"', [], false);?>
            </div>
        </div>
        <div>
 
        </div>
    </fieldset>
    <div class="espaceHor"></div>
    <?php
if ($mode = "modifier") {
    echo '
    <fieldset>
        <legend>Statut</legend>
        <div>' . $unStatut->getIcone() . "&nbsp fiche " . $unStatut->getLibelleStatut() . '</div>
    </fieldset>';
}
 
echo '    <div>
        <div class="info">';
 
echo $submit;
?>
 
    </div>
    </div>
    <div>
        <div class="info">
            <div class="erreur"></div>
        </div>
    </div>
 
    </form>
 
 
    <div class="espaceHor"></div>
    <div id="listeActivites" class="colonne">
    <?php
for ($i = 0; $i < count($listeActivites); $i++) {
    if ($i == 0) {
        $form = '<template id="formTemp"><form>';
        $finform = '</form></template>';
        $dateDebut = $listeActivites[$i]->getDateDebutItv();
        $dateFin = $listeActivites[$i]->getDateFinItv();
    } else {
        $form = '<form>';
        $finform = '</form>';
        $dateDebut = str_replace(' ', 'T', $listeActivites[$i]->getDateDebutItv());
        $dateFin = str_replace(' ', 'T', $listeActivites[$i]->getDateFinItv());
    }
 
    echo $form;
    echo '<fieldset class="colonne">
        <legend>Dates et horaires</legend>
        <div class="info colonne ">
            <label class="titre" for="dateIntervention">Date de l\'intervention :</label>
            <input type="date" id="dateIntervention" ' . $disabledAct . ' name="dateIntervention" value="' . $listeActivites[$i]->getDateIntervention() . '" required>
        </div>
        <div>
            <div class="info colonne ">
                <label class="titre" for="dateDebutItv">Heure de début :</label>
                <input type="datetime-local" id="dateDebutItv" ' . $disabledAct . ' name="dateDebutItv" value="' . $dateDebut . '" required>
            </div>
            <div class="info colonne ">
                <label class="titre" for="dateFinItv">Heure de fin :</label>
                <input type="datetime-local" id="dateFinItv" ' . $disabledAct . ' name="dateFinItv" value="' . $dateFin . '" required>
            </div>
        </div>
        <div class="info colonne ">
            <label class="titre" for="dureeItv">Durée de l\'intervention :</label>
            <input type="time" id="dureeItv" ' . $disabledAct . ' name="dureeItv" value="' . $listeActivites[$i]->getDureeItv() . '" required>
        </div>
    </fieldset>
    <fieldset class="colonne">
        <legend>Actions</legend>
            <div class="colonne">
                <div>
                <div class="colonne case" >
        <div class="titre" >Actions</div>';
 
    foreach ($listeActions as $elt) {
        if ($listeActivites[$i]->getIdActivite() != '') {
            $listeCheckbox = creerRequete('actionscorrespondantes', 'idActionsCorrespondantes', 'idAction,idActivite', ['idActivite' => $listeActivites[$i]->getIdActivite()], false);
            foreach ($listeCheckbox as $unCheck) {
                if ($unCheck->getIdAction() == $elt->getIdAction()) {
                    $checked = 'checked';
                } else {
                    $checked = '';
                }
            }
        } else {
            $checked = '';
        }
        echo '<div><div class="double"><label for="idActions[]" >' . $elt->getLibelleAction() . '</label></div>
                    <div><input type="checkbox" value="' . $elt->getIdAction() . '" name="idActions[]" ' . $checked . ' ></div></div>';
    }
    echo '</div>
    </fieldset>';
    echo $finform;
 
}
?>
    </div>
    <?php
echo '<div class="info">' . $activites . '<a href="index.php?page=ListeFichesItv">
            <div class="bouton boutonRetour"><i class="far fa-arrow-alt-circle-left"></i>&nbsp Retour</div></a></div>';
?>
</section>
le problème se situe a l entrée du foreach ligne 279 il me semble si vous avez besoin de supplément de code ou un schéma de cette partie de la BDD afin de faciliter votre analyse n'hésiter pas a me demander.

j ai déjà fait des var_dump de $checked et il est vrai que le premier élément apparait en '' alors qu'il devrait aussi ètre en checked car le tableau comporte deux objet (résultat de requete en BDD) ou les id sont 1 et 4 et ces valeurs entre bien dans le if mais la seule valeur qui passe en checked est le 4.

si je met un seul élément dans le tableau $listeCheckbox il va checked la valeur mais malheureusement le but est que s'applique checked a toute les valeurs.

Merci d'avance pour celui/ceux qui regarderons et si il peuvent apporter un début de réponse encore plus de merci

EDIT:
Bonjour,

j'ai pu solutionner le problème en ajoutant un flag, du coup je passe en résolu

pour ceux que sa intéresse je laisse la modification apportée

cette partie

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 ($listeActions as $elt) {
        if ($listeActivites[$i]->getIdActivite() != '') {
            $listeCheckbox = creerRequete('actionscorrespondantes', 'idActionsCorrespondantes', 'idAction,idActivite', ['idActivite' => $listeActivites[$i]->getIdActivite()], false);
            foreach ($listeCheckbox as $unCheck) {
                if ($unCheck->getIdAction() == $elt->getIdAction()) {
                    $checked = 'checked';
                } else {
                    $checked = '';
                }
            }
        } else {
            $checked = '';
        }
        echo '<div><div class="double"><label for="idActions[]" >' . $elt->getLibelleAction() . '</label></div>
                    <div><input type="checkbox" value="' . $elt->getIdAction() . '" name="idActions[]" ' . $checked . ' ></div></div>';
    }
a été remplacée par

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
foreach ($listeActivites as $uneActivite) {
        if ($uneActivite->getIdActivite() != '') {
            $listeChecked = creerRequete('actionscorrespondantes', 'idActionsCorrespondantes', 'idAction,idActivite', ['idActivite' => $uneActivite->getIdActivite()], false);
 
            foreach ($listeActions as $uneAction) {
                $checkFlag = false;
                foreach ($listeChecked as $unCheck) {
                    if ($unCheck->getIdAction() == $uneAction->getIdAction()) {
                        $checkFlag = true;
                        $checked = 'checked';
                    } else {
                        if (!$checkFlag) {
                            $checked = '';
                        }
                    }
                }
                echo '<div><div class="double"><label for="idActions[]" >' . $uneAction->getLibelleAction() . '</label></div>
                    <div><input type="checkbox" value="' . $uneAction->getIdAction() . '" name="idActions[]" ' . $checked . ' ></div></div>';
            }
 
        } else {
            $checked = '';
        }
    }