Statistiques
| Branche: | Révision :

root / src / admin.php @ d072e29c

Historique | Voir | Annoter | Télécharger (5,92 ko)

1
<?php
2
session_start ();
3
require("headers.php");
4

    
5

    
6

    
7
if (! defined('PHP_EOL')) {
8
        define('PHP_EOL', strtoupper(substr(PHP_OS, 0, 3) == 'WIN') ? "\r\n"
9
                        : strtoupper(substr(PHP_OS, 0, 3) == 'MAC') ? "\r" : "\n");
10
}
11

    
12
$hn = SERVEUR;
13
$un = NOM;
14
$pw = PASSE;
15
$db = BASE;
16
$submit        = "Submit";
17
$options       = 1;
18
$baseFilename  = $tb;
19
$pageTitle     = $tb;
20

    
21
if (@$_REQUEST["action"] == "CHANGE_TB") {
22
  $_SESSION["tb"] = $_REQUEST["tb"];
23
} else {
24
  if (!isset($_SESSION["tb"])) {
25
    $_SESSION["tb"] = "lab_members";
26
  }
27
}
28
$tb = $_SESSION["tb"];
29

    
30
$phpExtension = '.php';
31
if (isset($baseFilename) && $baseFilename != '') {
32
        $phpFile = $baseFilename.$phpExtension;
33
        //$contentFile = $baseFilename.'Content.inc';
34
        $contentFile = $baseFilename.'.php';
35
} elseif (isset($tb)) {
36
        $phpFile = $tb.$phpExtension;
37
        //$contentFile = $tb.'Content.inc';
38
        $contentFile = $tb.'.php';
39
} else {
40
        $phpFile = 'index'.$phpExtension;
41
        //$contentFile = 'Content.inc';
42
        $contentFile = 'phpMyEdit-content.php';
43
}
44

    
45
$buffer = '';
46

    
47
function echo_buffer($x)
48
{
49
        global $buffer;
50
        $buffer .= $x.PHP_EOL;
51
}
52

    
53
function check_constraints($tb,$fd)
54
{
55
  $query    = "show create table $tb";
56
  $result   = mysql_query($query);
57
  $tableDef = preg_split('/\n/',mysql_result($result,0,1));
58

    
59
  $constraint_arg="";
60
  while (list($key,$val) = each($tableDef)) {
61
    $words=preg_split("/[\s'`()]+/", $val);
62
    if ($words[1] == "CONSTRAINT" && $words[6]=="REFERENCES") {
63
      if ($words[5]==$fd) {
64
        $constraint_arg="  'values' => array(\n".
65
                        "    'table'  => '$words[7]',\n".
66
                        "    'column' => '$words[8]'\n".
67
                        "  ),\n";
68
      }
69

    
70
    }
71
  }
72
  return $constraint_arg;
73
}
74

    
75
$self = basename($_SERVER['PHP_SELF']);
76
$dbl  = @mysql_pconnect($hn, $un, $pw);
77

    
78

    
79

    
80

    
81

    
82

    
83

    
84

    
85

    
86

    
87

    
88

    
89

    
90

    
91

    
92

    
93
$select_tb = "<form action='admin.php' method='POST'>";
94
$select_tb .= "<input type='hidden' name='action' value='CHANGE_TB'/>";
95
$select_tb .= "<select name='tb'>";
96
$tbs     = @mysql_list_tables($db, $dbl);
97
$num_tbs = @mysql_num_rows($tbs);
98
for ($j = 0; $j < $num_tbs; $j++) {
99
        $tb_choice = @mysql_tablename($tbs, $j);
100
  $tb_choice = htmlspecialchars($tb_choice);
101
  $checked = $tb_choice == $tb ? ' selected="selected" ' : '';
102
        $select_tb .= "<option value='$tb_choice' $checked>$tb_choice</option>";
103
}
104
$select_tb .= "</select>";
105
$select_tb .= "<input type='Submit' name='Submit' value='Show this table' />";
106
$select_tb .= "</form>";
107

    
108
echo $select_tb;
109

    
110

    
111

    
112

    
113

    
114

    
115

    
116

    
117

    
118

    
119

    
120

    
121

    
122

    
123

    
124

    
125

    
126

    
127
@mysql_select_db($db);
128
$tb_desc = @mysql_query("DESCRIBE $tb");
129
$fds     = @mysql_list_fields($db,$tb,$dbl);
130
$j = 0; 
131
$fd = @mysql_field_name($fds, $j);
132
$ff = @mysql_field_flags($fds, $j);
133

    
134
if (!stristr($ff, 'primary_key')) {
135
  echo "ERROR, first field is not a primary_key.";
136
  exit();
137
}
138

    
139
$id = htmlspecialchars($fd);
140

    
141
{
142
        echo_buffer("
143
// MySQL host name, user name, password, database, and table
144
\$opts['hn'] = '$hn';
145
\$opts['un'] = '$un';
146
\$opts['pw'] = '$pw';
147
\$opts['db'] = '$db';
148
\$opts['tb'] = '$tb';
149

150
// Name of field which is the unique key
151
\$opts['key'] = '$id';
152

153
// Type of key field (int/real/string/date etc.)");
154

    
155
        if ($id == '') {
156
                echo_buffer("\$opts['key_type'] = '';");
157
        } else {
158
                $fds = @mysql_list_fields($db,$tb,$dbl);
159
                for ($j = 0; ($fd = @mysql_field_name($fds, $j)) != ''; $j++) {
160
                        if ($fd == $id) {
161
                                echo_buffer("\$opts['key_type'] = '".@mysql_field_type($fds, $j)."';");
162
                                break;
163
                        }
164
                }
165
        }
166
        echo_buffer("
167
// Sorting field(s)
168
\$opts['sort_field'] = array('$id');
169

170
// Options you wish to give the users
171
// A - add,  C - change, P - copy, V - view, D - delete,
172
// F - filter, I - initial sort suppressed
173
\$opts['options'] = \$privopt;
174
");
175

    
176
        @mysql_select_db($db);
177
        $tb_desc = @mysql_query("DESCRIBE $tb");
178
        $fds     = @mysql_list_fields($db, $tb, $dbl);
179
        $num_fds = @mysql_num_fields($fds);
180
        $ts_cnt  = 0;
181
        for ($k = 0; $k < $num_fds; $k++) {
182
                $fd = mysql_field_name($fds,$k);
183
                $fm = mysql_fetch_field($fds,$k);
184
                $fn = strtr($fd, '_-.', '   ');
185
                $fn = preg_replace('/(^| +)id( +|$)/', '\\1ID\\2', $fn); // uppercase IDs
186
                $fn = ucfirst($fn);
187
                $row = @mysql_fetch_array($tb_desc);
188
                echo_buffer('$opts[\'fdd\'][\''.$fd.'\'] = array('); // )
189
                echo_buffer("  'name'     => '".str_replace('\'','\\\'',$fn)."',");
190
                $auto_increment = strstr($row[5], 'auto_increment') ? 1 : 0;
191
                if (substr($row[1],0,3) == 'set') {
192
                        echo_buffer("  'select'   => 'M',");
193
                } else {
194
                        echo_buffer("  'select'   => 'T',");
195
                }
196
                if ($auto_increment) {
197
                        echo_buffer("  'options'  => 'AVCPDR', // auto increment");
198
                }
199
                // timestamps are read-only
200
                else if (@mysql_field_type($fds, $k) == 'timestamp') {
201
                        if ($ts_cnt > 0) {
202
                                echo_buffer("  'options'  => 'AVCPD',");
203
                        } else { // first timestamp
204
                                echo_buffer("  'options'  => 'AVCPDR', // updated automatically (MySQL feature)");
205
                        }
206
                        $ts_cnt++;
207
                }
208
                echo_buffer("  'maxlen'   => ".@mysql_field_len($fds,$k).',');
209
                // blobs -> textarea
210
                if (@mysql_field_type($fds,$k) == 'blob') {
211
                        echo_buffer("  'textarea' => array(");
212
                        echo_buffer("    'rows' => 5,");
213
                        echo_buffer("    'cols' => 50),");
214
                }
215
                // SETs and ENUMs get special treatment
216
                if ((substr($row[1],0,3) == 'set' || substr($row[1],0,4) == 'enum')
217
                                && ! (($pos = strpos($row[1], '(')) === false)) {
218
                        $indent = str_repeat(' ', 18);
219
                        $outstr = substr($row[1], $pos + 2, -2);
220
                        $outstr = explode("','", $outstr);
221
                        $outstr = str_replace("''", "'",  $outstr);
222
                        $outstr = str_replace('"', '\\"', $outstr);
223
                        $outstr = implode('",'.PHP_EOL.$indent.'"', $outstr);
224
                        echo_buffer("  'values'   => array(".PHP_EOL.$indent.'"'.$outstr.'"),');
225
                }
226
                // automatic support for Default values
227
                if ($row[4] != '' && $row[4] != 'NULL') {
228
                        echo_buffer("  'default'  => '".$row[4]."',");
229
                } else if ($auto_increment) {
230
                        echo_buffer("  'default'  => '0',");
231
                }
232
                // check for table constraints
233
                $outstr = check_constraints($tb, $fd);
234
                if ($outstr != '') {
235
                        echo_buffer($outstr);
236
                }
237
                echo_buffer("  'sort'     => true");
238
                //echo_buffer("  'nowrap'   => false,");
239
                echo_buffer(');');
240
        }
241

    
242
   
243
  eval($buffer);
244

    
245
}
246

    
247
require("footers.php");
248
?>