<?php
//Permet d'afficher les erreurs en cas de Bug
error_reporting(E_ALL);
ini_set("display_errors", 1); 

// Fonction recuptables sert à la récupération des tables
function recuptables( $nombdd ) {
//création d'un tableau
 $tables = array();
	//requête sql Show Tables
 $sql = mysql_query("SHOW TABLES FROM $nombdd ") or die("Erreur de r&eacute;cup&eacute;ration des tables dans $nombdd");
	//Boucle de récupération grace à la syntaxe EXPLAIN
	//Utilitation de la fonction explaintable
 if( mysql_num_rows( $sql ) > 0 ) {
   while( $table = mysql_fetch_array( $sql ) ) {
     $explain = explaintable( $table[0] ); 
     $tables[$table[0]] = $explain;
    }
 }
//Renvoi le résultat du tableau à la fin de la fonction
 return $tables;
}


function explaintable( $tbname ) {
  $explain = array();
  $sql = mysql_query("EXPLAIN $tbname") or die("Erreur de recuperation de la structure de table");
  $i = 0;

  while( $get = mysql_fetch_array( $sql ) ) {
     array_push( $explain, $get[0] ); 
     $i++;
  }
  return $explain;
}

function verifencodage($string) {
  if( !mb_check_encoding($string,'UTF-8')) {
	//Force l'encodage des résultat en UTF-8 
    return mb_convert_encoding($string,'UTF-8','ISO-8859-1');
  } else {
    return $string;
  }
}

// Requete de connection à la base de donnée
// Complètez ces champs avec vos identifiants de connection
$bdd   = "immap";
$mabddmysql = mysql_connect('localhost','root','password');
$configdb   = mysql_select_db( $bdd );
$mestables = recuptables( $bdd );

//nom de Votre base de donnée mongoDB
$mongobdd   = "immap";

try {
	// Connexion à localhost:27017
  $mongoconnection = new Mongo();
  $mongobdd = $mongoconnection->selectDB( $mongobdd );
} catch(MongoConnectionException $e) {
  die("Probleme durant le demarrage de mongoDB. Veuillez redemarrer le serveur Mongo.");
}

//Boucle de récupération de la structure des tables et de leur contenu
foreach( $mestables as $table => $struct ) {
	//Requête de sélection des tables , configuerez le nombre d'enregistrements en changeant les valeurs suivantes
	//ex :9999999 = nombre d'enregistrements
	//SELECT * FROM $table LIMIT 0 , 9999999
	$sql = mysql_query("SELECT * FROM $table LIMIT 0 , 9999999") or die( mysql_error() );
  	$count = mysql_num_rows( $sql );

  // Démarre une nouvelle collection (table) mongo
  $collection = $mongobdd->$table;

  // Si du contenu est déja présent insérer le contenu
  if( $count > 0 ) {
    while( $info = mysql_fetch_array( $sql, MYSQL_NUM )) {
      $infosize = count( $info );
      $mongosql = array();
	//
      for( $i=0; $i < $infosize; $i++ ) {
        $mongosql[$struct[$i]] = verifencodage($info[$i]);
  }
 //requete d'insertion à l'intérieur de la bdd mongo
  $collection->insert($mongosql);
  }
// Créer simplement une entrée vide
} else {
  for( $i=0; $i < $infosize; $i++ ) {
    $mongosql[$struct[$i]] = '';
  }

  $collection->insert($mongosql);
  }
}

echo "Felicitation! V&eacute;rifiez votre base mongo pour l'utiliser !";
?>