blob: c7080603c8b79b996966caab4d97d5c29204d8f6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
<?php
// generate mysql graph
echo "Opening Database Connection...\n";
$link = mysql_connect('localhost', 'root', '123456');
if (!$link) {
die('keine Verbindung möglich: ' . mysql_error());
}
#mysql_close($link);
mysql_select_db('pbs');
$result = mysql_list_tables('pbs');
echo "Get Tables ...\n";
while ($row = mysql_fetch_row($result)) {
$tables[$row[0]] = array();
}
mysql_free_result($result);
// Save all table-names
foreach($tables as $tablename => $data){
$result = mysql_query("SHOW COLUMNS FROM $tablename");
while ($row = mysql_fetch_assoc($result)) {
$tables[$tablename][] = $row;
}
}
mysql_free_result($result);
echo "Get Fieldlist from tables ...\n";
// Prepare dot-string
$b = "\n";
$str = 'digraph x {
node [shape=record];
ranksep=3;
size="20,20";'.$b;
// get all table-fields
foreach($tables as $tablename => $data){
$str .= $tablename .' [label= "{';
$array = array();
$array[] = strtoupper($tablename);
foreach($data as $d){
$array[] = "<".$d['Field'].">".$d['Field'];
}
$str .= implode("|",$array);
$str .= '}",width=3];'.$b;
}
echo "Generate the Links ...\n";
// link the database-items (foreign-keys)
foreach($tables as $tablename1 => $table1){
foreach($table1 as $field1){
$f1 = $field1['Field'];
foreach($tables as $tablename2 => $table2){
foreach($table2 as $field2){
$f2 = $field2['Field'];
if( $tablename1 != $tablename2 && $f1 == $f2 && strstr($f1,'ID') && "pbs_".str_replace("ID",'',$f1) == $tablename1){
// Draw lines to tables
$str .= $tablename1 ." -> ".$tablename2.";".$b;
// draw lines to table-items
#$str .= $tablename1.":".$f1 ." -> ".$tablename2.":".$f2 .";".$b;
}
}
}
}
}
$str .= "}";
echo "Write to file ...\n";
// Create the dot file
$fp = fopen("mysqlGraph.dot", "w");
fputs ($fp, $str);
fclose ($fp);
// Generate the image
echo "Generate the image ...\n";
exec("dot -Tpng mysqlGraph.dot >mysqlGraph.png");
// delete the dot file
unlink ('mysqlGraph.dot');
echo "Ready!\n";
|