[ Index ] |
|
Code source de phpMyAdmin 2.10.3 |
1 <?php 2 /* $Id: tbl_addfield.php 9601 2006-10-25 10:55:20Z nijel $ */ 3 // vim: expandtab sw=4 ts=4 sts=4: 4 5 /** 6 * Get some core libraries 7 */ 8 require_once './libraries/common.lib.php'; 9 require_once './libraries/Table.class.php'; 10 11 $js_to_run = 'functions.js'; 12 require_once './libraries/header.inc.php'; 13 14 // Check parameters 15 PMA_checkParameters(array('db', 'table')); 16 17 18 /** 19 * Defines the url to return to in case of error in a sql statement 20 */ 21 $err_url = 'tbl_sql.php?' . PMA_generate_common_url($db, $table); 22 23 /** 24 * The form used to define the field to add has been submitted 25 */ 26 $abort = false; 27 if (isset($submit_num_fields)) { 28 if (isset($orig_after_field)) { 29 $after_field = $orig_after_field; 30 } 31 if (isset($orig_field_where)) { 32 $field_where = $orig_field_where; 33 } 34 $num_fields = $orig_num_fields + $added_fields; 35 $regenerate = TRUE; 36 } elseif (isset($do_save_data)) { 37 $query = ''; 38 39 // Transforms the radio button field_key into 3 arrays 40 $field_cnt = count($field_name); 41 for ($i = 0; $i < $field_cnt; ++$i) { 42 if (isset(${'field_key_' . $i})) { 43 if (${'field_key_' . $i} == 'primary_' . $i) { 44 $field_primary[] = $i; 45 } 46 if (${'field_key_' . $i} == 'index_' . $i) { 47 $field_index[] = $i; 48 } 49 if (${'field_key_' . $i} == 'unique_' . $i) { 50 $field_unique[] = $i; 51 } 52 } // end if 53 } // end for 54 // Builds the field creation statement and alters the table 55 56 for ($i = 0; $i < $field_cnt; ++$i) { 57 // '0' is also empty for php :-( 58 if (empty($field_name[$i]) && $field_name[$i] != '0') { 59 continue; 60 } 61 62 $query .= PMA_Table::generateFieldSpec($field_name[$i], $field_type[$i], $field_length[$i], $field_attribute[$i], isset($field_collation[$i]) ? $field_collation[$i] : '', $field_null[$i], $field_default[$i], isset($field_default_current_timestamp[$i]), $field_extra[$i], isset($field_comments[$i]) ? $field_comments[$i] : '', $field_primary, $i); 63 64 if ($field_where != 'last') { 65 // Only the first field can be added somewhere other than at the end 66 if ($i == 0) { 67 if ($field_where == 'first') { 68 $query .= ' FIRST'; 69 } else { 70 $query .= ' AFTER ' . PMA_backquote(urldecode($after_field)); 71 } 72 } else { 73 $query .= ' AFTER ' . PMA_backquote($field_name[$i-1]); 74 } 75 } 76 $query .= ', ADD '; 77 } // end for 78 $query = preg_replace('@, ADD $@', '', $query); 79 80 // To allow replication, we first select the db to use and then run queries 81 // on this db. 82 PMA_DBI_select_db($db) or PMA_mysqlDie(PMA_getError(), 'USE ' . PMA_backquotes($db), '', $err_url); 83 $sql_query = 'ALTER TABLE ' . PMA_backquote($table) . ' ADD ' . $query; 84 $error_create = FALSE; 85 PMA_DBI_try_query($sql_query) or $error_create = TRUE; 86 87 if ($error_create == false) { 88 89 $sql_query_cpy = $sql_query . ';'; 90 91 // Builds the primary keys statements and updates the table 92 $primary = ''; 93 if (isset($field_primary)) { 94 $primary_cnt = count($field_primary); 95 for ($i = 0; $i < $primary_cnt; $i++) { 96 $j = $field_primary[$i]; 97 if (isset($field_name[$j]) && strlen($field_name[$j])) { 98 $primary .= PMA_backquote($field_name[$j]) . ', '; 99 } 100 } // end for 101 $primary = preg_replace('@, $@', '', $primary); 102 if (strlen($primary)) { 103 $sql_query = 'ALTER TABLE ' . PMA_backquote($table) . ' ADD PRIMARY KEY (' . $primary . ');'; 104 $result = PMA_DBI_query($sql_query); 105 $sql_query_cpy .= "\n" . $sql_query . ';'; 106 } 107 } // end if 108 109 // Builds the indexes statements and updates the table 110 $index = ''; 111 if (isset($field_index)) { 112 $index_cnt = count($field_index); 113 for ($i = 0; $i < $index_cnt; $i++) { 114 $j = $field_index[$i]; 115 if (isset($field_name[$j]) && strlen($field_name[$j])) { 116 $index .= PMA_backquote($field_name[$j]) . ', '; 117 } 118 } // end for 119 $index = preg_replace('@, $@', '', $index); 120 if (strlen($index)) { 121 $sql_query = 'ALTER TABLE ' . PMA_backquote($table) . ' ADD INDEX (' . $index . ')'; 122 $result = PMA_DBI_query($sql_query); 123 $sql_query_cpy .= "\n" . $sql_query . ';'; 124 } 125 } // end if 126 127 // Builds the uniques statements and updates the table 128 $unique = ''; 129 if (isset($field_unique)) { 130 $unique_cnt = count($field_unique); 131 for ($i = 0; $i < $unique_cnt; $i++) { 132 $j = $field_unique[$i]; 133 if (isset($field_name[$j]) && strlen($field_name[$j])) { 134 $unique .= PMA_backquote($field_name[$j]) . ', '; 135 } 136 } // end for 137 $unique = preg_replace('@, $@', '', $unique); 138 if (strlen($unique)) { 139 $sql_query = 'ALTER TABLE ' . PMA_backquote($table) . ' ADD UNIQUE (' . $unique . ')'; 140 $result = PMA_DBI_query($sql_query); 141 $sql_query_cpy .= "\n" . $sql_query . ';'; 142 } 143 } // end if 144 145 146 // Builds the fulltext statements and updates the table 147 $fulltext = ''; 148 if (isset($field_fulltext)) { 149 $fulltext_cnt = count($field_fulltext); 150 for ($i = 0; $i < $fulltext_cnt; $i++) { 151 $j = $field_fulltext[$i]; 152 $fulltext .= PMA_backquote($field_name[$j]) . ', '; 153 } // end for 154 $fulltext = preg_replace('@, $@', '', $fulltext); 155 if (strlen($fulltext)) { 156 $sql_query = 'ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT (' . $fulltext . ')'; 157 $result = PMA_DBI_query($sql_query); 158 $sql_query_cpy .= "\n" . $sql_query . ';'; 159 } 160 } // end if 161 162 // garvin: If comments were sent, enable relation stuff 163 require_once ('./libraries/relation.lib.php'); 164 require_once ('./libraries/transformations.lib.php'); 165 166 $cfgRelation = PMA_getRelationsParam(); 167 168 // garvin: Update comment table, if a comment was set. 169 if (isset($field_comments) && is_array($field_comments) && $cfgRelation['commwork'] && PMA_MYSQL_INT_VERSION < 40100) { 170 foreach ($field_comments AS $fieldindex => $fieldcomment) { 171 if (isset($field_name[$fieldindex]) && strlen($field_name[$fieldindex])) { 172 PMA_setComment($db, $table, $field_name[$fieldindex], $fieldcomment, '', 'pmadb'); 173 } 174 } 175 } 176 177 // garvin: Update comment table for mime types [MIME] 178 if (isset($field_mimetype) && is_array($field_mimetype) && $cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfg['BrowseMIME']) { 179 foreach ($field_mimetype AS $fieldindex => $mimetype) { 180 if (isset($field_name[$fieldindex]) && strlen($field_name[$fieldindex])) { 181 PMA_setMIME($db, $table, $field_name[$fieldindex], $mimetype, $field_transformation[$fieldindex], $field_transformation_options[$fieldindex]); 182 } 183 } 184 } 185 186 // Go back to the structure sub-page 187 $sql_query = $sql_query_cpy; 188 unset($sql_query_cpy); 189 $message = $strTable . ' ' . htmlspecialchars($table) . ' ' . $strHasBeenAltered; 190 $active_page = 'tbl_structure.php'; 191 require ('./tbl_structure.php'); 192 } else { 193 PMA_mysqlDie('', '', '', $err_url, FALSE); 194 // garvin: An error happened while inserting/updating a table definition. 195 // to prevent total loss of that data, we embed the form once again. 196 // The variable $regenerate will be used to restore data in libraries/tbl_properties.inc.php 197 $num_fields = $orig_num_fields; 198 if (isset($orig_after_field)) { 199 $after_field = $orig_after_field; 200 } 201 if (isset($orig_field_where)) { 202 $field_where = $orig_field_where; 203 } 204 $regenerate = true; 205 } 206 } // end do alter table 207 208 /** 209 * Displays the form used to define the new field 210 */ 211 if ($abort == FALSE) { 212 /** 213 * Gets tables informations 214 */ 215 require_once ('./libraries/tbl_common.php'); 216 require_once ('./libraries/tbl_info.inc.php'); 217 /** 218 * Displays top menu links 219 */ 220 $active_page = 'tbl_structure.php'; 221 require_once ('./libraries/tbl_links.inc.php'); 222 /** 223 * Display the form 224 */ 225 $action = 'tbl_addfield.php'; 226 require_once ('./libraries/tbl_properties.inc.php'); 227 228 // Diplays the footer 229 echo "\n"; 230 require_once ('./libraries/footer.inc.php'); 231 } 232 233 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Mon Nov 26 15:18:20 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |