begin process at 2012 05 27 22:30:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

SQL

 > CONVERTIR BASE FIREBIRD EN MYSQL

CONVERTIR BASE FIREBIRD EN MYSQL


 Information sur la source

Note :
Aucune note
Catégorie :SQL Classé sous :Convertir, Firebird, MySQL, PDO, SQL Niveau :Débutant Date de création :26/05/2011 Date de mise à jour :26/05/2011 19:42:04 Vu / téléchargé :2 491 / 80

Auteur : castelfrederic29

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici une petit bout de code pour "convertir" une base Firebird en une base MySQL.
Ce code permet:
- de créer une base MySQL ou d'écraser une existante
- de copier les tables Firebird dans MySQL
- d'importer les données
Ce code ne gère pas: (un jour peut etre)
- les clefs des tables!

L'accès aux base ce fait via PDO.

Dans mon cas j'avais juste besoin de créer une base MySQL à partir d'une base Firebird, et de copier les données.
Je n'effectue aucune mise à jour sur ma base MySQL (d'où l’absence de gestion des clefs), sont unique but est d'être une copie de la base Firebird mise en ligne sur un futur site, puisque apparemment très peu d'hébergeur propose la gestion de base Firebird.


Ce code est une adaptation de : http://www.phpcs.com/codes/CONVERTISSEUR-INTERBASE -MYSQL_44643.aspx
un grand merci à son auteur.

Source

  • <?php
  • #######################################################
  • # SCRIPT DE CONVERSION DE BDD #
  • # INTERBASE -> MYSQL #
  • # #
  • # original: le 08/11/2007 par Silk #
  • # (trooper@libertysurf.fr) #
  • # adaptation le 25/05/2011 par F CASTEL #
  • #######################################################
  • //source: http://www.phpcs.com/codes/CONVERTISSEUR-INTERBASE-MYSQL_44643.aspx
  • #script
  • /*
  • * Fonction: Copier une base Firebird (existante) dans une base MySQL
  • * Copie des tables (sauf system) et des données
  • * Créer la base MySQL ou écraser celle existante
  • *
  • * Config des Tests:
  • * - WampServer 2.0 (extension php_interbase : actif)
  • * - Windows 7
  • * - Firebird Server 2.5
  • * - PHP 5.2
  • * - FireFox 4
  • *
  • * pas de gestion des clefs des tables!!!!! TODO
  • * gestion propre des erreurs : TODO
  • */
  • //chrono
  • $temps_debut = microtime(true);
  • //plus de limite de temps
  • set_time_limit(0); //pas tres classe mais sinon sa bloque si > 30sec
  • echo '<div class="Titre"><h1>' . 'Firebird vers MySQL' . '</h1></div>';
  • //CREER base MySQL
  • if ($_POST['MySQLNew'] == 'new') {
  • echo "<h2>" . 'Création de la base MySQL' . "</h2>";
  • $pdo = new PDO('mysql:host=localhost', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  • $requete = 'CREATE DATABASE ' . $_POST['MySQLDBName'] . ' DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci';
  • echo "<p>" . $requete . "</p>";
  • $pdo->prepare($requete)->execute();
  • }
  • echo "<h2>" . 'Les Bases de données' . "</h2>";
  • //PARAMETRES INTERBASE
  • $utilisateur_interbase = $_POST['FirebirdUser'];
  • $passe_interbase = $_POST['FirebirdPassword'];
  • $dsn_interbase = "firebird:dbname=" . $_POST['FirebirdHost'] . ":" . str_ireplace('\\', '\\\\', $_POST['FirebirdDBName']); //il faut doubler les \
  • $bdd_interbase = new PDO($dsn_interbase, $utilisateur_interbase, $passe_interbase);
  • //$bdd_interbase->exec("SET CHARACTER SET ISO8859_1");
  • echo "<h3>" . 'Firebird' . "</h3>";
  • echo "<p>" . $dsn_interbase . "</p>";
  • //PARAMETRES MYSQL
  • $utilisateur_mysql = $_POST['MySQLUser'];
  • $passe_mysql = $_POST['MySQLPassword'];
  • $dsn_mysql = 'mysql:host=' . $_POST['MySQLHost'] . ';dbname=' . $_POST['MySQLDBName'];
  • $bdd_mysql = new PDO($dsn_mysql, $utilisateur_mysql,$passe_mysql);
  • //$bdd_mysql->exec("SET CHARACTER SET latin1");
  • echo "<h3>" . 'MySQL' . "</h3>";
  • echo "<p>" . $dsn_mysql . "</p>";
  • //RAZ base MySQL
  • if ($_POST['MySQLNew'] == 'erase') {
  • echo "<h2>" . 'Supprimer toutes les tables MySQL' . "</h2>";
  • // lister les tables
  • $requete = 'SHOW TABLES FROM test1';
  • $statement = $bdd_mysql->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
  • $statement->execute();
  • $tables = $statement->fetchAll(PDO::FETCH_ASSOC );
  • echo "<p>" . count($tables) . ' Tables à traiter' . "</p>";
  • // virer chaque table
  • echo '<p>';
  • foreach($tables as $table){
  • $requete = 'DROP TABLE ' . $table['Tables_in_test1'];
  • echo $requete . '<br />';
  • $bdd_mysql->exec($requete);
  • }
  • echo '</p>';
  • }
  • //LISTE TABLES FIREBIRD
  • //liste les tables de la BDD
  • $requete = 'SELECT DISTINCT rdb$relation_name FROM rdb$relation_fields
  • WHERE rdb$view_context IS NULL
  • AND rdb$system_flag = 0'; //Injection de la requête permettant de récupérer les tables
  • $statement = $bdd_interbase->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
  • $statement->execute();
  • $tables = $statement->fetchAll(PDO::FETCH_ASSOC );
  • //traiter chaque table
  • echo "<h2>" . 'Creation des tables FIREBIRD dans la base MySQL' . "</h2>";
  • echo "<p>" . count($tables) . ' Tables à traiter' . "</p>";
  • foreach ($tables as $table) {
  • //traiter une table
  • echo "<h3>" . $table['RDB$RELATION_NAME'] . "</h3>";
  • //lire la structure de la table
  • $requete = 'SELECT rel_field.rdb$field_position, rel_field.rdb$field_name, field.RDB$FIELD_TYPE, field.RDB$FIELD_LENGTH, rel_field.RDB$NULL_FLAG
  • FROM rdb$relations rel
  • JOIN rdb$relation_fields rel_field
  • ON rel_field.rdb$relation_name = rel.rdb$relation_name
  • JOIN rdb$fields field
  • ON rel_field.rdb$field_source = field.rdb$field_name
  • WHERE rel.rdb$relation_name = \'' .$table['RDB$RELATION_NAME'] .'\'
  • ORDER BY rel_field.rdb$field_position, rel_field.rdb$field_name';
  • $statement = $bdd_interbase->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
  • $statement->execute();
  • $res_struc_table = $statement->fetchAll(PDO::FETCH_ASSOC);
  • //Construction de la requête de création de la table dans MySQL
  • $req_create_table = "CREATE TABLE `".trim($table['RDB$RELATION_NAME'])."` (";
  • $first = true;
  • //pour chaque champ
  • foreach ($res_struc_table as $field) {
  • $struct_champ = TypeChamp($field['RDB$FIELD_TYPE'] ,$field['RDB$FIELD_LENGTH']);
  • //si field 1 pas de virgule
  • if (!$first) {
  • $req_create_table .= " , ";
  • }
  • $first = false; //c'est plus le 1er champ
  • $req_create_table .= "`".trim($field['RDB$FIELD_NAME'])."` ".$struct_champ[0];
  • if ($struct_champ[1]) {
  • $req_create_table .= "(".$struct_champ[1].")";
  • }
  • if ($field['RDB$NULL_FLAG'] == 0) {
  • $req_create_table .= " NULL";
  • } else {
  • $req_create_table .= " NOT NULL";
  • }
  • }
  • $req_create_table .= ") ENGINE = MyISAM"; //clore instruction
  • echo '<p>';
  • print_r($req_create_table);
  • echo '</p>';
  • //créer la table dans MySQL
  • $bdd_mysql->exec($req_create_table);
  • }
  • //importer les données
  • if (isset($_POST['Import'])) {
  • echo "<h2>" . 'Import des données FIREBIRD dans la base MySQL' . "</h2>";
  • foreach ($tables as $table) {
  • echo "<h3>" . $table['RDB$RELATION_NAME'] . "</h3>";
  • //selections des données firebird
  • $requete = 'SELECT * FROM ' . $table['RDB$RELATION_NAME'];
  • $statement = $bdd_interbase->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
  • $statement->execute();
  • $data = $statement->fetchAll(PDO::FETCH_ASSOC );
  • echo '<p>' . count($data) . ' entrées' . '</p>';
  • //Construction de la requête d'insertion des données
  • foreach ($data as $row) { //chaque ligne de table
  • $req_insert = "INSERT INTO `" . trim($table['RDB$RELATION_NAME']) . "` SET ";
  • $first = true;
  • $key = key($row);
  • $val = current($row);
  • reset($row);
  • while(list ($key, $val) = each ($row)) //chaque champ
  • {
  • if (!$first) {
  • $req_insert .= " , ";
  • }
  • $first = false;//c'est plus le 1er champ
  • //Correction des valeurs texte
  • $val = str_replace("'","\'",$val);
  • //$val = utf8_decode($val);
  • $req_insert .= "`" . $key . "`='" . addslashes($val) . "'";
  • }
  • //insert LA ligne dans MySQL
  • $bdd_mysql->exec($req_insert);
  • }
  • }
  • }
  • //FIN
  • echo '<h1>' . 'Script executé !' . '</h1>';
  • $temps_fin = microtime(true);
  • echo '<p><strong>' . 'Temps d\'execution : '.round($temps_fin - $temps_debut, 0) . ' secondes' . '</strong></p>';
  • ?>
  • </body>
  • </html>
  • <?php
  • #FONCTIONS
  • function TypeChamp ($champ,$taille) {
  • switch ($champ) {
  • case 7:
  • return array('SMALLINT',$taille);
  • break;
  • case 8:
  • return array('INT',$taille);
  • break;
  • case 16:
  • return array('BIGINT',$taille);
  • break;
  • case 10:
  • return array('FLOAT','');
  • break;
  • case 11:
  • //return 'D_Float';
  • return 'erreur';
  • break;
  • case 27:
  • return array('DOUBLE','');
  • break;
  • case 9:
  • //return 'Quad';
  • return 'erreur';
  • break;
  • case 14:
  • return array('CHAR',$taille);
  • break;
  • case 37:
  • return array('VARCHAR',$taille);
  • break;
  • case 40:
  • //return 'CString';
  • return 'erreur';
  • break;
  • case 13:
  • return array('TIME','');
  • break;
  • case 12:
  • return array('DATE','');
  • break;
  • case 35:
  • return array('TIMESTAMP','');
  • break;
  • case 261:
  • return array('BLOB','');
  • break;
  • }
  • }
  • #FIN FONCTIONS
  • ?>
<?php

#######################################################
#           SCRIPT DE CONVERSION DE BDD               #
#               INTERBASE -> MYSQL                    #
#                                                     #
# original:       le 08/11/2007 par Silk              #
#               (trooper@libertysurf.fr)              # 
# adaptation      le 25/05/2011 par F CASTEL          #
#######################################################
//source: http://www.phpcs.com/codes/CONVERTISSEUR-INTERBASE-MYSQL_44643.aspx

#script
/*
 * Fonction: Copier une base Firebird (existante) dans une base MySQL
 *           Copie des tables (sauf system) et des données
 *           Créer la base MySQL ou écraser celle existante
 *
 * Config des Tests:
 *  - WampServer 2.0 (extension php_interbase : actif)
 *  - Windows 7
 *  - Firebird Server 2.5
 *  - PHP 5.2
 *  - FireFox 4
 *
 * pas de gestion des clefs des tables!!!!! TODO
 * gestion propre des erreurs : TODO
 */

//chrono
$temps_debut = microtime(true);

//plus de limite de temps
set_time_limit(0); //pas tres classe mais sinon sa bloque si > 30sec
echo '<div class="Titre"><h1>' . 'Firebird vers MySQL' . '</h1></div>';

//CREER base MySQL
if ($_POST['MySQLNew'] == 'new') {
	echo "<h2>" . 'Création de la base MySQL' . "</h2>";
	$pdo = new PDO('mysql:host=localhost', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
	$requete = 'CREATE DATABASE ' . $_POST['MySQLDBName'] . ' DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci';
	echo "<p>" . $requete . "</p>";
	$pdo->prepare($requete)->execute();

}

echo "<h2>" . 'Les Bases de données' . "</h2>";

//PARAMETRES INTERBASE
$utilisateur_interbase = $_POST['FirebirdUser'];
$passe_interbase = $_POST['FirebirdPassword'];
$dsn_interbase = "firebird:dbname=" . $_POST['FirebirdHost'] . ":" . str_ireplace('\\', '\\\\', $_POST['FirebirdDBName']); //il faut doubler les \
$bdd_interbase = new PDO($dsn_interbase, $utilisateur_interbase, $passe_interbase);
//$bdd_interbase->exec("SET CHARACTER SET ISO8859_1");
echo "<h3>" . 'Firebird' . "</h3>";
echo "<p>" . $dsn_interbase . "</p>";

//PARAMETRES MYSQL
$utilisateur_mysql = $_POST['MySQLUser'];
$passe_mysql = $_POST['MySQLPassword'];
$dsn_mysql = 'mysql:host=' . $_POST['MySQLHost'] . ';dbname=' .  $_POST['MySQLDBName'];
$bdd_mysql = new PDO($dsn_mysql, $utilisateur_mysql,$passe_mysql);
//$bdd_mysql->exec("SET CHARACTER SET latin1");
echo "<h3>" . 'MySQL' . "</h3>";
echo "<p>" . $dsn_mysql . "</p>";

//RAZ base MySQL
if ($_POST['MySQLNew'] == 'erase') {
	echo "<h2>" . 'Supprimer toutes les tables MySQL' . "</h2>";
	//	lister les tables
	$requete = 'SHOW TABLES FROM test1';
	$statement = $bdd_mysql->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
	$statement->execute();
	$tables = $statement->fetchAll(PDO::FETCH_ASSOC );
	echo "<p>" . count($tables) . ' Tables à traiter' . "</p>";

	//	virer chaque table
	echo '<p>';
	foreach($tables as $table){
		$requete = 'DROP TABLE ' . $table['Tables_in_test1'];
		echo $requete . '<br />';
		$bdd_mysql->exec($requete);
	}
	echo '</p>';
}

//LISTE TABLES FIREBIRD

//liste les tables de la BDD
$requete = 'SELECT DISTINCT rdb$relation_name FROM rdb$relation_fields
WHERE rdb$view_context IS NULL
  AND rdb$system_flag = 0'; //Injection de la requête permettant de récupérer les tables
$statement = $bdd_interbase->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
$statement->execute();
$tables = $statement->fetchAll(PDO::FETCH_ASSOC );

//traiter chaque table
echo "<h2>" . 'Creation des tables FIREBIRD dans la base MySQL' . "</h2>";
echo "<p>" . count($tables) . ' Tables à traiter' . "</p>";
foreach ($tables as $table) {
	//traiter une table
	echo "<h3>" . $table['RDB$RELATION_NAME'] . "</h3>";

	//lire la structure de la table
	$requete = 'SELECT rel_field.rdb$field_position, rel_field.rdb$field_name, field.RDB$FIELD_TYPE, field.RDB$FIELD_LENGTH, rel_field.RDB$NULL_FLAG
                        FROM rdb$relations rel
                          JOIN rdb$relation_fields rel_field
                            ON rel_field.rdb$relation_name = rel.rdb$relation_name
                          JOIN rdb$fields field
                            ON rel_field.rdb$field_source = field.rdb$field_name
                        WHERE rel.rdb$relation_name = \'' .$table['RDB$RELATION_NAME'] .'\'
                        ORDER BY rel_field.rdb$field_position, rel_field.rdb$field_name';
	$statement = $bdd_interbase->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
	$statement->execute();
	$res_struc_table = $statement->fetchAll(PDO::FETCH_ASSOC);

	//Construction de la requête de création de la table dans MySQL
	$req_create_table = "CREATE TABLE `".trim($table['RDB$RELATION_NAME'])."` (";
	$first = true;

	//pour chaque champ
	foreach ($res_struc_table as $field) {
		$struct_champ = TypeChamp($field['RDB$FIELD_TYPE'] ,$field['RDB$FIELD_LENGTH']);
		//si field 1 pas de virgule
		if (!$first) {
			$req_create_table .= " , ";
		}
		$first = false; //c'est plus le 1er champ

		$req_create_table .= "`".trim($field['RDB$FIELD_NAME'])."` ".$struct_champ[0];
		if ($struct_champ[1]) {
			$req_create_table .= "(".$struct_champ[1].")";
		}
		if ($field['RDB$NULL_FLAG'] == 0) {
			$req_create_table .= " NULL";
		} else {
			$req_create_table .= " NOT NULL";
		}
	}
	$req_create_table .=  ") ENGINE = MyISAM"; //clore instruction
	echo '<p>';
	print_r($req_create_table);
	echo '</p>';

	//créer la table dans MySQL
	$bdd_mysql->exec($req_create_table);

}

//importer les données
if (isset($_POST['Import'])) {
	echo "<h2>" . 'Import des données FIREBIRD dans la base MySQL' . "</h2>";
	foreach ($tables as $table) {
		echo "<h3>" . $table['RDB$RELATION_NAME'] . "</h3>";
		//selections des données firebird
		$requete = 'SELECT * FROM ' . $table['RDB$RELATION_NAME'];
		$statement = $bdd_interbase->prepare($requete, array(PDO::ATTR_CURSOR, PDO::CURSOR_FWDONLY));
		$statement->execute();
		$data = $statement->fetchAll(PDO::FETCH_ASSOC );
		echo '<p>' . count($data) . ' entrées' . '</p>';

		//Construction de la requête d'insertion des données
		foreach ($data as $row) { //chaque ligne de table
			$req_insert = "INSERT INTO `" . trim($table['RDB$RELATION_NAME']) . "` SET ";
			$first = true;
			$key = key($row);
			$val = current($row);
			reset($row);
			while(list ($key, $val) = each ($row))	//chaque champ
			{
				if (!$first) {
					$req_insert .= " , ";
				}
				$first = false;//c'est plus le 1er champ
				//Correction des valeurs texte
				$val = str_replace("'","\'",$val);
				//$val = utf8_decode($val);
				$req_insert .= "`" . $key . "`='" . addslashes($val) . "'";
			}
			//insert LA ligne dans MySQL
			$bdd_mysql->exec($req_insert);
		}
	}

}


//FIN
echo '<h1>' . 'Script executé !' . '</h1>';
$temps_fin = microtime(true);
echo '<p><strong>' . 'Temps d\'execution : '.round($temps_fin - $temps_debut, 0) . ' secondes' . '</strong></p>';

?>
</body>
</html>

<?php

#FONCTIONS
function TypeChamp ($champ,$taille) {
	switch ($champ) {
		case 7:
			return array('SMALLINT',$taille);
			break;
		case 8:
			return array('INT',$taille);
			break;
		case 16:
			return array('BIGINT',$taille);
			break;
		case 10:
			return array('FLOAT','');
			break;
		case 11:
			//return 'D_Float';
			return 'erreur';
			break;
		case 27:
			return array('DOUBLE','');
			break;
		case 9:
			//return 'Quad';
			return 'erreur';
			break;
		case 14:
			return array('CHAR',$taille);
			break;
		case 37:
			return array('VARCHAR',$taille);
			break;
		case 40:
			//return 'CString';
			return 'erreur';
			break;
		case 13:
			return array('TIME','');
			break;
		case 12:
			return array('DATE','');
			break;
		case 35:
			return array('TIMESTAMP','');
			break;
		case 261:
			return array('BLOB','');
			break;
	}
}
#FIN FONCTIONS


?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 mai 2011 19:42:04 :
Modifs mineures

 Sources de la même categorie

Source avec Zip CLASS PHP :: REQUÊTES MYSQL par devgoneti
Source avec une capture SQL/EXE EXECUTEUR DE REQUETTES SQL par enokbyreal
Source avec Zip ESPACE MEMBRE BASIQUE par bonhommecrea
Source avec Zip Source avec une capture MODIFICATEUR DE DONNEES DANS UNE BASE SQL AVEC LISTING DES T... par cram121
Source avec Zip Source avec une capture CRÉER ET ETABLIR UNE PAGE DE MAINTENANCE POUR X HEURES par popolino0

 Sources en rapport avec celle ci

Source avec une capture SQL/EXE EXECUTEUR DE REQUETTES SQL par enokbyreal
CLASSE MYSQL UTILISANT LES FONCTIONS PDO par Vince66
Source avec Zip Source avec une capture DBOC - V3.1 [AJAX][PHP5] par Morphinof
Source avec Zip [PHP5.2] CLASSE PDO par hornetbzz
Source avec Zip CLASSE SQL par benjycorp

Commentaires et avis

Commentaire de begueradj le 12/06/2011 17:37:15

je n'ai jamais entendu parle d'une base firebird

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Astuce du jour #1: Comment configurer une erreur de la base de donné MySql [ par SmallToad ] Quand vous avez de des erreurs de la base de donnée, êtes-vous déjà demander comment configurer le message d'erreur de la base de donnée MySql C'est Convertir Access en MySQL - Help ! [ par iubito ] Slt!G une base Access et pour m'entraîner sur MySQL je veux foutre le contenu de mes tables dans MySQL.J'arrive à créer des tables, entrer des données connexions mysql multiples [ par eax ] salutj'ai des pb avec des connexions multiples en mysql:je souhaite updater mes tables localhost &lt;&gt; sql.free.fr mais voilà, sur mon serveur apac Retour à la ligne [ par philagui ] Bonjour,je fais afficher tous les resultats d'un champ d'une DB MySQL par l'intermédiaire du script suivant:$sql="SELECT Titre FROM Tableaux WHERE 1"; Convertir un nombre en expression literrale en PL/SQL [ par ThReM ] bonjour je cherche une source pour convertir un nombre en ce meme nombre mais ecris en toutes lettre (99 ==&gt; quatre vingt dix neuf) en langage PL/S *** où est lerreur ? [ par kodiask ] $db = mysql_connect('******', '******', ''); mysql_select_db('*****',$db); $sql = 'SELECT nom,prenom FROM *****'; $req = mysql_query($sql) or die('Err besoin d'aide pour cree encore des tablo [ par agentTMORT ] je veut que lorsque une requete sql soit post& un tableau soit cree pour cette source voici mon codemysql_select_db('rockmagazine',$db) or die ("conne conseil et pb en sql avec mysql [ par herveguedj ] j'ai sur une page rech.php des liste pour le sexe sans bd et une liste qui liste les regions de ma table regionquand je fais une requete$sql="select Erreur Mysql [ par FearBlue ] Slt a tous!!!!jai une erreur mysql :je v vous montrer mon code c en rapport avec LIKEif(isset($HTTP_POST_VARS['recherche'])){$db = mysql_connect('loca ## Où est l'erreur ???? bon diou !! [ par kodiask ] voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales