begin process at 2010 03 22 13:16:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > MLD D'UN BASE DE DONNÉES MYSQL OU SQLITE

MLD D'UN BASE DE DONNÉES MYSQL OU SQLITE


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :MLD, Reverse Ingenerinng, Analyse Niveau :Initié Date de création :15/04/2008 Vu / téléchargé :4 724 / 201

Auteur : Hakumbaya

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Avec la croissance grandissante du "reverse ingenering", les programmeur ont de plus en plus souvent a faire des refontes de site internet, et donc pour cela, une refonte des bases de données associés. Seulement le travail de nos rédecesseur n'etant pas toujours bien commenté et documenté, voici un petit outil permettant de remedier a ce probleme.

Ce petit code permet d'afficher le MLD de la base de données contenue sur support MySQL ou SQLite.

Source

  • Version MySQL :
  • <?php
  • $data = SQL_MLDServer("127.0.0.1","root","");
  • echo $data;
  • function SQL_MLDServer($serveur,$user,$password){
  • $return="";
  • $id_sql = mysql_connect($serveur,$user,$password); //CONNECTION AU SERVEUR MYSQL
  • $db_list = mysql_list_dbs($id_sql); //LISTER LES BASES DE DONNEES
  • $count = mysql_num_rows($db_list); //NOMBRE DE BASE DE DONNEES
  • for($i=0;$i<$count;$i++){
  • $database = mysql_db_name($db_list, $i);
  • $return.="<br><br><font face=tahoma size=3><u><b>{$database}</b></u></font><br>";
  • mysql_select_db($database,$id_sql); //CONNECTION A LA BASE DE DONNEES SQL
  • $pointeur = mysql_query("SHOW TABLES FROM $database;",$id_sql); //LISTER LES TABLES
  • $nbline = mysql_affected_rows($id_sql); //NOMBRES DE TABLES
  • for($j=0;$j<$nbline;$j++){
  • $return.="<br><font face=tahoma size=2><b>" . mysql_result($pointeur,$j,0) . "</b></font>";
  • $list_fields = @mysql_list_fields($database, mysql_result($pointeur,$j,0), $id_sql); //LISTER LES CHAMPS
  • $nbcolumntab = @mysql_num_fields($list_fields); //NOMBRE DE CHAMPS
  • if($nbcolumntab>0){ //SI ON TROUVE AU MOINS UN CHAMPS
  • $return.="<font face=tahoma size=1>(<br></font>";
  • for($k=0;$k<$nbcolumntab;$k++){
  • $return.= "<font face=tahoma size=1>" . mysql_field_name($list_fields, $k) . "
  • " . SQLLexic(mysql_field_type($list_fields, $k)) . "
  • (" . mysql_field_len($list_fields, $k) . ")
  • " . SQLLexic(mysql_field_flags($list_fields, $k)) . "</font>";
  • if($k<$nbcolumntab-1){ $return.="<font face=tahoma size=1>,<br></font>";}
  • }
  • $return.="<font face=tahoma size=1>);<br></font>";
  • } else {
  • $return.="<font face=tahoma size=1 color=red>[No fields]</font>";
  • }
  • }
  • }
  • return $return;
  • }
  • function SQLLexic($chaine){
  • $chaine = str_replace( "string" ,"VARCHAR" ,$chaine);
  • $chaine = str_replace( "int" ,"INTEGER" ,$chaine);
  • $chaine = str_replace( "not_null" ,"NOT NULL" ,$chaine);
  • $chaine = str_replace( "primary_key" ,"PRIMARY KEY" ,$chaine);
  • $chaine = str_replace( "auto_increment" ,"AUTO_INCREMENT" ,$chaine);
  • $chaine = str_replace( "unsigned" ,"UNSIGNED" ,$chaine);
  • $chaine = str_replace( "real" ,"FLOAT" ,$chaine);
  • $chaine = str_replace( "timestamp" ,"TIMESTAMP" ,$chaine);
  • $chaine = str_replace( "blob" ,"BLOB" ,$chaine);
  • $chaine = str_replace( "binary" ,"BINARY" ,$chaine);
  • $chaine = str_replace( "enum" ,"" ,$chaine);
  • $chaine = str_replace( "multiple_key" ,"" ,$chaine);
  • $chaine = str_replace( "unique_key" ,"" ,$chaine);
  • $chaine = str_replace( "zerofill" ,"" ,$chaine);
  • return "{$chaine}";
  • }
  • ?>
Version MySQL :

<?php 

$data = SQL_MLDServer("127.0.0.1","root","");
echo $data;

function SQL_MLDServer($serveur,$user,$password){

    $return="";
    $id_sql = mysql_connect($serveur,$user,$password);							//CONNECTION AU SERVEUR MYSQL
    $db_list = mysql_list_dbs($id_sql);									//LISTER LES BASES DE DONNEES
    $count = mysql_num_rows($db_list);									//NOMBRE DE BASE DE DONNEES
    for($i=0;$i<$count;$i++){
        $database = mysql_db_name($db_list, $i);
        $return.="<br><br><font face=tahoma size=3><u><b>{$database}</b></u></font><br>";
        mysql_select_db($database,$id_sql);								//CONNECTION A LA BASE DE DONNEES SQL
        $pointeur = mysql_query("SHOW TABLES FROM $database;",$id_sql);					//LISTER LES TABLES
        $nbline = mysql_affected_rows($id_sql);								//NOMBRES DE TABLES
        for($j=0;$j<$nbline;$j++){
	    $return.="<br><font face=tahoma size=2><b>" . mysql_result($pointeur,$j,0) . "</b></font>";
	    $list_fields = @mysql_list_fields($database, mysql_result($pointeur,$j,0), $id_sql);	//LISTER LES CHAMPS
	    $nbcolumntab = @mysql_num_fields($list_fields);						//NOMBRE DE CHAMPS
	    if($nbcolumntab>0){										//SI ON TROUVE AU MOINS UN CHAMPS
                $return.="<font face=tahoma size=1>(<br></font>";
	        for($k=0;$k<$nbcolumntab;$k++){
		    $return.= "<font face=tahoma size=1>" . mysql_field_name($list_fields, $k) . " 
						        " . SQLLexic(mysql_field_type($list_fields, $k)) . "
						       (" . mysql_field_len($list_fields, $k) . ")  
						        " . SQLLexic(mysql_field_flags($list_fields, $k)) . "</font>";
	            if($k<$nbcolumntab-1){ $return.="<font face=tahoma size=1>,<br></font>";}
	        }
	        $return.="<font face=tahoma size=1>);<br></font>";
	    } else {
		$return.="<font face=tahoma size=1 color=red>[No fields]</font>";
	    }
        }
    }
    return $return;
}

function SQLLexic($chaine){
    $chaine = str_replace(	"string"		,"VARCHAR"		,$chaine);
    $chaine = str_replace(	"int"			,"INTEGER"		,$chaine);
    $chaine = str_replace(	"not_null"		,"NOT NULL"		,$chaine);
    $chaine = str_replace(	"primary_key"		,"PRIMARY KEY"		,$chaine);
    $chaine = str_replace(	"auto_increment"	,"AUTO_INCREMENT"	,$chaine);
    $chaine = str_replace(	"unsigned"		,"UNSIGNED"		,$chaine);
    $chaine = str_replace(	"real"			,"FLOAT"		,$chaine);
    $chaine = str_replace(	"timestamp"		,"TIMESTAMP"		,$chaine);
    $chaine = str_replace(	"blob"			,"BLOB"			,$chaine);
    $chaine = str_replace(	"binary"		,"BINARY"		,$chaine);
    $chaine = str_replace(	"enum"			,""			,$chaine);
    $chaine = str_replace(	"multiple_key"		,""			,$chaine);
    $chaine = str_replace(	"unique_key"		,""			,$chaine);
    $chaine = str_replace(	"zerofill"		,""			,$chaine);
    return "{$chaine}";
}

?>

 Conclusion

Chacun des algorithme est placé dans un fichier individuel.

Le MLD sur MySQL ne se fait que via des commandes SQL propres a la base MySQL.

Le MLD sur SQLite se fait en partie par le lecture de tables cachées contenant les informations de la base.

 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


 Sources du même auteur

Source avec Zip Source avec une capture EXPLORATEUR DE FICHIER
Source avec Zip Source avec une capture TEXTE GRAPHIQUE SANS GDI
Source avec Zip CONSOLE CLIENTE FTP - SQL

 Sources de la même categorie

RECUP IDENTIFICATION par luludovicp
Source avec Zip EXTEND MYSQLI par petibras
Source avec Zip CLASSE DE COMMANDES PEAR DB par pascalmintrosse
Source avec Zip AFFICHER LE RÉSULTAT D'UNE REQUÊTE SQL SUR PLUSIEURS PAGE par karimmass
Source avec Zip SQLDIFF : MIGRATION, VERSIONNING ET SYNCHRONISATION DE LA ST... par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip [PHP5] - CLASSE DE VÉRIFICATION DE FORMULAIRE par codefalse

Commentaires et avis

Commentaire de TheWeasel47 le 15/04/2008 15:55:46 8/10

Pas mal non plus et surtout très utile!!!!!
A quand la version Oracle?

Commentaire de Hakumbaya le 15/04/2008 18:12:28

Les versions Oracles et Posgres sont a programmer.
J'en prend bonne note et je me renseigne ;p

Commentaire de malalam le 15/04/2008 22:10:45 administrateur CS 7/10

Hello,

là par contre le code me plait moins...mais l'idée reste très bonne. Personnellement, j'ai foutu ça dans ma classe d'abstraction DB. C'est toujours très utile ce genre de scripts...
Mais là je te reproche le HTML dans la fonction, (pas beau en plus, ton html), alors qu'elle ne devrait renvoyer que de la donnée, là. Parce que le but c'est d'exploiter son retour ensuite pour, par exemple, vérifier des données qu'on s'apprête à lui envoyer, etc...
Si c'est juste pour de l'affichage, je vais plutôt aller sur mon phpmyadmin ou en l'occurrence pour moi sur mon enterprise manager.
De plus tes @ sans réelle vérification derrière me gênent.
Donc cette fois tu n'auras pas 10...mais pas non plus une mauvaise note parce que le code reste correct et que l'idée est bonne...et que ce code change des codes habituels :-)

Commentaire de Delphiprog le 19/04/2008 08:44:09 administrateur CS

Et les vues ? et les procédures stockées ? et les triggers ?
Une base de données digne de ce nom comme MySql et, dans une moindre mesure, SqlLite ne se limite pas au simple stockage de données.
Je suis d'accord avec Malalam pour dire que le HTML n'est absolument pas utile ici. Il n'y a pas besoin de faire "joli" mais uniquement de l'utile.

L'idée est bonne et mérite d'être encouragée.

Allez, encore un petit effort et tire la quintessence du schéma INFORMATION_SCHEMA de MySql.

Commentaire de Delphiprog le 19/04/2008 08:46:34 administrateur CS

Ah oui, aussi : le terme MLD est un peu galvaudé ici puisque les scripts ne font que de décrire le modèle physique des tables.
Appelons un chat un chat...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

"analyse" de site [ par Evangun ] Bonjour &#224; tous,ce n'est pas du php mais je me demandais s'il y avait un logiciel qui par exemple pouvait parcourir un site (en local chez moi ce analyse lexicale, comment faire? [ par selim68 ] Bonjour,J'aimerai définir des criticités à des produits de ma base de données, ceux-ci seront définit par l'utilisateur, exemple de saisie possible:   formulaire analyse texte [ par lacomm ] HelloJe dois construire un site qui fonctionne comme ceci1) utilisateur doit être reconnu2) utilisateur répond à quelques questions       Aimez-vous analyse d'un fichier text en php [ par fattouch_squall ] Svp je voulé savoir sil ya pa une possibilité afin extraire des donnée particuliere dun contenu dun fichier text en php, car je veu en créer une inter Numéroter un classement [ par pronostic ] Bonjour à tous. Malgré mes recherches et mes tentatives, je n'arrive pas à mes fins. Je souhaiterais afficher un classement du meilleur pronostiqueur Analyse du matériel [ par krz_yama ] Bonsoir,Voila dans le cadre d'un jeu php je cherche une solution afin d'éviter les "multicomptes", le filtrage d'ip n'étant évidement pas efficace, ca Analyse d'une url [ par ddolku ] Bonjour ,Je désire ajouter en php une analyse d'url sur ma base de donnée.j'ai des url a analysé qui sont soit , 200 OK ou en 302 Found .je souhaite f Outil Web d'analyse de texte [ par tecap ] Bonjour, Je recherche un outil d'analyse de texte intégrable à un site Web (PHP, HTML), ou alors un Web service que je pourrais utiliser pour analyser Créer un système d'analyse de simples codes sources PHP [ par david11001 ] Salut !Je désirerai donner la possibilité à mes membres de faire éxécuter par mon site un petit script php.Celui-ci ne doit se composer que de variabl Analyse contenu Site Web [ par kaspersky ] Bonjour à tous, Je viens vous faire part d'un projet que je souhaite réaliser, et je souhaiterai avoir vos réactions,remarques et pour ce qui ont e


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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,967 sec (3)

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