Bonjour,
Déjà, on va simplifier l'affichage des checkbox :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <div class="form-check">
<?php
$periodes_all = [
"Néolithique",
"Age du Bronze",
"Age du Fer",
"Antiquité",
"Moyen-Age",
"Période moderne",
"Epoque contemporaine",
];
foreach( $periodes_all as $ii => $periode )
{
?>
<input class="form-check-input" name="periode_princ[]" type="checkbox" id="Checkbox<?=$ii;?>" value="<?=htmlspecialchars($periode);?>">
<label class="form-check-label" for="Checkbox<?=$ii;?>"><?=htmlspecialchars($periode);?></label>
<?php
}
?>
</div> |

Envoyé par
Clement_archeo
...mes données sont bien stockées avec des virgules en séparateur...
Bien que ce ne soit pas la meilleure méthode *, on va supposer qu'on part de là.
* Normalement, on utilise une autre table, et on fait une JOINTURE
Donc, le contenu de la colonne dans la table est du genre : "Néolithique,Age du Fer,Période moderne"
$Periode_princ = "Néolithique,Age du Fer,Période moderne";
1- Pour pré-cocher les bonnes cases :
- il faut commencer par explode(), avec comme séparateur la virgule
- ensuite, grâce à in_array(), on vérifie pour chaque checkbox
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
| <div class="form-check">
<?php
// array des périodes (issu de la BDD)
$Periode_princ_array = explode(',', $Periode_princ);
// Toutes les périodes
$periodes_all = [
"Néolithique",
"Age du Bronze",
"Age du Fer",
"Antiquité",
"Moyen-Age",
"Période moderne",
"Epoque contemporaine",
];
foreach( $periodes_all as $ii => $periode )
{
$checked = ( !empty($Periode_princ_array) && in_array($periode, $Periode_princ_array) )? 'checked="checked=' : ''; // si in_array : on coche
?>
<input class="form-check-input" name="periode_princ[]" type="checkbox" id="Checkbox<?=$ii;?>" value="<?=htmlspecialchars($periode);?>"<?=$checked;?>>
<label class="form-check-label" for="Checkbox<?=$ii;?>"><?=htmlspecialchars($periode);?></label>
<?php
}
?>
</div> |
Partager