/home/mjc1/public_html/db_admin/tbl_alter.php


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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<?php
/* $Id: tbl_alter.php,v 2.8 2004/05/20 16:14:08 nijel Exp $ */
// vim: expandtab sw=4 ts=4 sts=4:


/**
 * Gets some core libraries
 */
require_once('./libraries/grab_globals.lib.php');
$js_to_run 'functions.js';
require_once(
'./header.inc.php');

// Check parameters
PMA_checkParameters(array('db''table'));

/**
 * Defines the url to return to in case of error in a sql statement
 */
$err_url 'tbl_properties_structure.php?' PMA_generate_common_url($db$table);


/**
 * Modifications have been submitted -> updates the table
 */
$abort false;
if (isset(
$submit)) {
    
$field_cnt count($field_orig);
    for (
$i 0$i $field_cnt$i++) {
        
// to "&quot;" in tbl_properties.php
        
$field_orig[$i]     = urldecode($field_orig[$i]);
        if (
strcmp(str_replace('"''&quot;'$field_orig[$i]), $field_name[$i]) == 0) {
            
$field_name[$i] = $field_orig[$i];
        }
        
$field_default_orig[$i] = urldecode($field_default_orig[$i]);
        if (
strcmp(str_replace('"''&quot;'$field_default_orig[$i]), $field_default[$i]) == 0) {
            
$field_default[$i]  = $field_default_orig[$i];
        }
        
$field_length_orig[$i] = urldecode($field_length_orig[$i]);
        if (
strcmp(str_replace('"''&quot;'$field_length_orig[$i]), $field_length[$i]) == 0) {
            
$field_length[$i] = $field_length_orig[$i];
        }
        if (!isset(
$query)) {
            
$query '';
        } else {
            
$query .= ', CHANGE ';
        }
        
$query .= PMA_backquote($field_orig[$i]) . ' ' PMA_backquote($field_name[$i]) . ' ' $field_type[$i];
        
// Some field types shouldn't have lengths
        
if ($field_length[$i] != ''
            
&& !preg_match('@^(DATE|DATETIME|TIME|TINYBLOB|TINYTEXT|BLOB|TEXT|MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT)$@i'$field_type[$i])) {
            
$query .= '(' $field_length[$i] . ')';
        }
        if (
$field_attribute[$i] != '') {
            
$query .= ' ' $field_attribute[$i];
        } else if (
PMA_MYSQL_INT_VERSION >= 40100 && $field_collation[$i] != '') {
            
$query .= PMA_generateCharsetQueryPart($field_collation[$i]);
        }
        if (
$field_default[$i] != '') {
            if (
strtoupper($field_default[$i]) == 'NULL') {
                
$query .= ' DEFAULT NULL';
            } else {
                
$query .= ' DEFAULT \'' PMA_sqlAddslashes($field_default[$i]) . '\'';
            }
        }
        if (
$field_null[$i] != '') {
            
$query .= ' ' $field_null[$i];
        }
        if (
$field_extra[$i] != '') {
            
$query .= ' ' $field_extra[$i];
        }
    } 
// end for

    // To allow replication, we first select the db to use and then run queries
    // on this db.
     
PMA_DBI_select_db($db) or PMA_mysqlDie(PMA_DBI_getError(), 'USE ' PMA_backquote($db) . ';'''$err_url);
    
// Optimization fix - 2 May 2001 - Robbat2
    
$sql_query 'ALTER TABLE ' PMA_backquote($table) . ' CHANGE ' $query;
    
$error_create FALSE;
    
$result    PMA_DBI_try_query($sql_query) or $error_create TRUE;

    if (
$error_create == FALSE) {
        
$message   $strTable ' ' htmlspecialchars($table) . ' ' $strHasBeenAltered;
        
$btnDrop   'Fake';

        
// garvin: If comments were sent, enable relation stuff
        
require_once('./libraries/relation.lib.php');
        require_once(
'./libraries/transformations.lib.php');

        
$cfgRelation PMA_getRelationsParam();

        
// garvin: Update comment table, if a comment was set.
        
if (isset($field_comments) && is_array($field_comments) && $cfgRelation['commwork']) {
            foreach (
$field_comments AS $fieldindex => $fieldcomment) {
                
PMA_setComment($db$table$field_name[$fieldindex], $fieldcomment$field_orig[$fieldindex]);
            }
        }

        
// garvin: Rename relations&display fields, if altered.
        
if (($cfgRelation['displaywork'] || $cfgRelation['relwork']) && isset($field_orig) && is_array($field_orig)) {
            foreach (
$field_orig AS $fieldindex => $fieldcontent) {
                if (
$field_name[$fieldindex] != $fieldcontent) {
                    if (
$cfgRelation['displaywork']) {
                        
$table_query 'UPDATE ' PMA_backquote($cfgRelation['table_info'])
                                      . 
' SET     display_field = \'' PMA_sqlAddslashes($field_name[$fieldindex]) . '\''
                                      
' WHERE db_name  = \'' PMA_sqlAddslashes($db) . '\''
                                      
' AND table_name = \'' PMA_sqlAddslashes($table) . '\''
                                      
' AND display_field = \'' PMA_sqlAddslashes($fieldcontent) . '\'';
                        
$tb_rs    PMA_query_as_cu($table_query);
                        unset(
$table_query);
                        unset(
$tb_rs);
                    }

                    if (
$cfgRelation['relwork']) {
                        
$table_query 'UPDATE ' PMA_backquote($cfgRelation['relation'])
                                      . 
' SET     master_field = \'' PMA_sqlAddslashes($field_name[$fieldindex]) . '\''
                                      
' WHERE master_db  = \'' PMA_sqlAddslashes($db) . '\''
                                      
' AND master_table = \'' PMA_sqlAddslashes($table) . '\''
                                      
' AND master_field = \'' PMA_sqlAddslashes($fieldcontent) . '\'';
                        
$tb_rs    PMA_query_as_cu($table_query);
                        unset(
$table_query);
                        unset(
$tb_rs);

                        
$table_query 'UPDATE ' PMA_backquote($cfgRelation['relation'])
                                      . 
' SET     foreign_field = \'' PMA_sqlAddslashes($field_name[$fieldindex]) . '\''
                                      
' WHERE foreign_db  = \'' PMA_sqlAddslashes($db) . '\''
                                      
' AND foreign_table = \'' PMA_sqlAddslashes($table) . '\''
                                      
' AND foreign_field = \'' PMA_sqlAddslashes($fieldcontent) . '\'';
                        
$tb_rs    PMA_query_as_cu($table_query);
                        unset(
$table_query);
                        unset(
$tb_rs);
                    } 
// end if relwork
                
// end if fieldname has changed
            
// end while check fieldnames
        
// end if relations/display has to be changed

        // garvin: Update comment table for mime types [MIME]
        
if (isset($field_mimetype) && is_array($field_mimetype) && $cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfg['BrowseMIME']) {
            foreach (
$field_mimetype AS $fieldindex => $mimetype) {
                
PMA_setMIME($db$table$field_name[$fieldindex], $mimetype$field_transformation[$fieldindex], $field_transformation_options[$fieldindex]);
            }
        }

        
$active_page 'tbl_properties_structure.php';
        require(
'./tbl_properties_structure.php');
    } else {
        
PMA_mysqlDie(''''''$err_urlFALSE);
        
// garvin: An error happened while inserting/updating a table definition.
        // to prevent total loss of that data, we embed the form once again.
        // The variable $regenerate will be used to restore data in tbl_properties.inc.php
        
if (isset($orig_field)) {
                
$field $orig_field;
        }

        
$regenerate true;
    }
}

/**
 * No modifications yet required -> displays the table fields
 */
if ($abort == FALSE) {
    if (!isset(
$selected)) {
        
PMA_checkParameters(array('field'));
        
$selected[]   = $field;
        
$selected_cnt 1;
    } else { 
// from a multiple submit
        
$selected_cnt count($selected);
    }

    
// TODO: optimize in case of multiple fields to modify
    
for ($i 0$i $selected_cnt$i++) {
        if (!empty(
$submit_mult)) {
            
$field PMA_sqlAddslashes(urldecode($selected[$i]), TRUE);
        } else {
            
$field PMA_sqlAddslashes($selected[$i], TRUE);
        }
        
$result        PMA_DBI_query('SHOW FULL FIELDS FROM ' PMA_backquote($table) . ' FROM ' PMA_backquote($db) . ' LIKE \'' $field '\';');
        
$fields_meta[] = PMA_DBI_fetch_assoc($result);
        
PMA_DBI_free_result($result);
    }

    
$num_fields  count($fields_meta);
    
$action      'tbl_alter.php';
    require(
'./tbl_properties.inc.php');
}


/**
 * Displays the footer
 */
require_once('./footer.inc.php');
?>