}
$dossier_temp_sql = CHEMIN_DOSSIER_DUMP . $_SESSION['alea'] . '_sql' . DS;
// Pour les sql d'une base
$dossier_temp_zip = CHEMIN_DOSSIER_DUMP . $_SESSION['alea'] . '_zip' . DS;
// Pour les zip des sql des bases (à l'export mais pas à l'import sinon ce dossier n'est pas vidé si l'opération n'arrive pas à son terme).
$fichier_csv_nom = 'bases_dump_' . $_SESSION['datetime'] . '_' . $_SESSION['alea'] . '.csv';
$fichier_zip_nom = 'bases_dump_' . $_SESSION['datetime'] . '_' . $_SESSION['alea'] . '.zip';
$separateur = ';';
require CHEMIN_DOSSIER_INCLUDE . 'fonction_dump.php';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération de la liste des structures avant export des bases
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'exporter' && $nb_bases) {
    // Mémoriser dans un fichier les données des structures concernées par les stats
    $fichier_texte = 'Id_Export' . $separateur . 'Id_Import' . $separateur . 'Id_Zone' . $separateur . 'Localisation' . $separateur . 'Dénomination' . $separateur . 'UAI' . $separateur . 'Contact_Nom' . $separateur . 'Contact_Prénom' . $separateur . 'Contact_Courriel' . $separateur . 'Date_Inscription' . $separateur . 'Nom_fichier' . "\r\n";
    $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_structures(implode(',', $tab_base_id));
    foreach ($DB_TAB as $DB_ROW) {
        $fichier_nom = 'dump_SACoche_' . $DB_ROW['sacoche_base'] . '_' . $_SESSION['datetime'] . '_' . mt_rand() . '.zip';
        $fichier_texte .= $DB_ROW['sacoche_base'] . $separateur . $separateur . $DB_ROW['geo_id'] . $separateur . $DB_ROW['structure_localisation'] . $separateur . $DB_ROW['structure_denomination'] . $separateur . $DB_ROW['structure_uai'] . $separateur . $DB_ROW['structure_contact_nom'] . $separateur . $DB_ROW['structure_contact_prenom'] . $separateur . $DB_ROW['structure_contact_courriel'] . $separateur . $DB_ROW['structure_inscription_date'] . $separateur . $fichier_nom . "\r\n";
    }
    FileSystem::ecrire_fichier(CHEMIN_DOSSIER_EXPORT . $fichier_csv_nom, $fichier_texte);
    $max = $nb_bases + 1;
    // La dernière étape consiste à zipper les fichiers de sauvegarde et à faire le ménage.
    // Créer ou vider le dossier temporaire qui contiendra le zip des zip
    FileSystem::creer_ou_vider_dossier($dossier_temp_zip);
    exit(']¤[' . $max);
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Etape d'export d'une base
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'exporter' && $num && $max && $num < $max) {
 <thead>
   <tr>
     <th class="nu"></th>
     <th class="nu"><q class="cocher_tout" title="Tout cocher."></q><br /><q class="cocher_rien" title="Tout décocher."></q></th>
     <th>Id</th>
     <th>Localisation</th>
     <th>Établissement</th>
     <th>Contact</th>
     <th>Date</th>
     <th class="nu"><q class="ajouter" title="Ajouter un établissement."></q></th>
   </tr>
 </thead>
 <tbody>
   <?php
   // Lister les structures
   $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_structures( FALSE /*listing_base_id*/ , $geo_id );
   foreach($DB_TAB as $DB_ROW)
   {
     // Formater la date
     $date_mysql  = $DB_ROW['structure_inscription_date'];
     $date_affich = ($date_mysql!=SORTIE_DEFAUT_MYSQL) ? convert_date_mysql_to_french($date_mysql) : '-' ;
     // Afficher une ligne du tableau
     $img = (LockAcces::tester_blocage('webmestre',$DB_ROW['sacoche_base'])===NULL) ? '<img class="bloquer" src="./_img/etat/acces_oui.png" title="Bloquer cet établissement." />' : '<img class="debloquer" src="./_img/etat/acces_non.png" title="Débloquer cet établissement." />' ;
     echo'<tr id="id_'.$DB_ROW['sacoche_base'].'">';
     echo  '<td class="nu"><a href="#id_0">'.$img.'</a></td>';
     echo  '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['sacoche_base'].'" /></td>';
     echo  '<td class="label">'.$DB_ROW['sacoche_base'].'</td>';
     echo  '<td class="label"><i>'.sprintf($geo_ordre_format,$DB_ROW['geo_ordre']).'</i>'.html($DB_ROW['geo_nom']).'<br />'.html($DB_ROW['structure_localisation']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['structure_denomination']).'<br />'.html($DB_ROW['structure_uai']).'</td>';
     echo  '<td class="label"><span>'.html($DB_ROW['structure_contact_nom']).'</span> <span>'.html($DB_ROW['structure_contact_prenom']).'</span><div>'.html($DB_ROW['structure_contact_courriel']).'</div></td>';
     echo  '<td class="label">'.$date_affich.'</td>';
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$num  = (isset($_POST['num'])) ? (int)$_POST['num'] : 0 ;  // Numéro de l'étape en cours
$max  = (isset($_POST['max'])) ? (int)$_POST['max'] : 0 ;  // Nombre d'étapes à effectuer

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// 1/3 : Récupération de la liste des structures avant collecte des stats
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if((!$num)||(!$max))
{
  // Pour mémoriser les totaux
  $_SESSION['tmp']['totaux'] = array( 'personnel_use'=>0 , 'eleve_use'=>0 , 'evaluation_use'=>0 , 'validation_use'=>0 );
  // Mémoriser les données des structures concernées par les stats
  $_SESSION['tmp']['infos'] = array();
  $DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_structures();
  foreach($DB_TAB as $DB_ROW)
  {
    $_SESSION['tmp']['infos'][] = array(
      'base_id'   => $DB_ROW['sacoche_base'],
      'structure' => $DB_ROW['structure_uai'].' '.$DB_ROW['structure_denomination'],
      'geo'       => $DB_ROW['geo_nom'],
    );
  }
  // Retour
  $max = count($DB_TAB) + 1 ; // La dernière étape consistera à vider la session temporaire et à renvoyer les totaux
  exit('ok-'.$max);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// 2/3 : Etape de récupération des stats
  <thead>
    <tr>
      <th class="nu"></th>
      <th class="nu"><q class="cocher_tout" title="Tout cocher."></q><br /><q class="cocher_rien" title="Tout décocher."></q></th>
      <th>Id</th>
      <th>Localisation</th>
      <th>Établissement</th>
      <th>Contact</th>
      <th>Date</th>
      <th class="nu"><q class="ajouter" title="Ajouter un établissement."></q></th>
    </tr>
  </thead>
  <tbody>
    <?php 
// Lister les structures
$DB_TAB = DB_WEBMESTRE_WEBMESTRE::DB_lister_structures(FALSE, $geo_id);
foreach ($DB_TAB as $DB_ROW) {
    // Formater la date
    $date_mysql = $DB_ROW['structure_inscription_date'];
    $date_affich = $date_mysql != SORTIE_DEFAUT_MYSQL ? convert_date_mysql_to_french($date_mysql) : '-';
    // Afficher une ligne du tableau
    $img = LockAcces::tester_blocage('webmestre', $DB_ROW['sacoche_base']) === NULL ? '<img class="bloquer" src="./_img/etat/acces_oui.png" title="Bloquer cet établissement." />' : '<img class="debloquer" src="./_img/etat/acces_non.png" title="Débloquer cet établissement." />';
    echo '<tr id="id_' . $DB_ROW['sacoche_base'] . '">';
    echo '<td class="nu"><a href="#id_0">' . $img . '</a></td>';
    echo '<td class="nu"><input type="checkbox" name="f_ids" value="' . $DB_ROW['sacoche_base'] . '" /></td>';
    echo '<td class="label">' . $DB_ROW['sacoche_base'] . '</td>';
    echo '<td class="label"><i>' . sprintf("%06u", $DB_ROW['geo_ordre']) . '</i>' . html($DB_ROW['geo_nom']) . '<br />' . html($DB_ROW['structure_localisation']) . '</td>';
    echo '<td class="label">' . html($DB_ROW['structure_denomination']) . '<br />' . html($DB_ROW['structure_uai']) . '</td>';
    echo '<td class="label"><span>' . html($DB_ROW['structure_contact_nom']) . '</span> <span>' . html($DB_ROW['structure_contact_prenom']) . '</span><div>' . html($DB_ROW['structure_contact_courriel']) . '</div></td>';
    echo '<td class="label">' . $date_affich . '</td>';
    echo '<td class="nu">';