$date_fin = isset($_POST['f_date_fin']) ? Clean::date_fr($_POST['f_date_fin']) : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_select_periodes = isset($_POST['select_periodes']) ? is_array($_POST['select_periodes']) ? $_POST['select_periodes'] : explode(',', $_POST['select_periodes']) : array();
$tab_select_classes_groupes = isset($_POST['select_classes_groupes']) ? is_array($_POST['select_classes_groupes']) ? $_POST['select_classes_groupes'] : explode(',', $_POST['select_classes_groupes']) : array();
$tab_select_periodes = array_filter(Clean::map_entier($tab_select_periodes), 'positif');
$tab_select_classes_groupes = array_filter(Clean::map_entier($tab_select_classes_groupes), 'positif');
$tab_groupe = array();
$tab_periode = array();
$tab_jointure = array();
$tab_graphique = array();
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bilan des affectations des périodes aux classes & groupes ; en plusieurs requêtes pour récupérer les périodes sans classes-groupes et les classes-groupes sans périodes.
// 1/2 - On commence les premières requêtes dès maintenant afin d'avoir les noms des groupes et des périodes à disposition.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer la liste des classes & groupes, dans l'ordre des niveaux
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_et_groupes_avec_niveaux();
if (empty($DB_TAB)) {
    exit('Aucune classe et aucun groupe ne sont enregistrés !');
}
foreach ($DB_TAB as $DB_ROW) {
    $tab_groupe[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
    $tab_graphique[$DB_ROW['groupe_id']] = '';
}
// Récupérer la liste des périodes, dans l'ordre choisi par l'admin
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_periodes();
if (empty($DB_TAB)) {
    exit('Aucune période n\'est enregistrée !');
}
foreach ($DB_TAB as $DB_ROW) {
    $tab_periode[$DB_ROW['periode_id']] = $DB_ROW['periode_nom'];
}
</p>

<?php

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Affichage du bilan des affectations des périodes aux classes & groupes ; en plusieurs requêtes pour récupérer les périodes sans classes-groupes et les classes-groupes sans périodes
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$tab_groupe    = array();
$tab_periode   = array();
$tab_jointure  = array();

// Récupérer la liste des classes & groupes, dans l'ordre des niveaux
switch($_SESSION['USER_PROFIL_TYPE'])
{
  case 'directeur'  : $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_et_groupes_avec_niveaux(); break;
  case 'professeur' : $DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_lister_classes_groupes_professeur($_SESSION['USER_ID'],$_SESSION['USER_JOIN_GROUPES']); break;
  case 'parent'     : $DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_classes_parent($_SESSION['USER_ID']); break;
  case 'eleve'      : $DB_TAB = array( 0 => array( 'groupe_id' => $_SESSION['ELEVE_CLASSE_ID'] , 'groupe_nom' => $_SESSION['ELEVE_CLASSE_NOM'] ) );
}
if(!empty($DB_TAB))
{
  foreach($DB_TAB as $DB_ROW)
  {
    $tab_groupe[$DB_ROW['groupe_id']] = '<th>'.html($DB_ROW['groupe_nom']).'</th>';
  }

  // Récupérer la liste des périodes, dans l'ordre choisi par l'admin
  $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_periodes();
  if(!empty($DB_TAB))
  {