Documentation TYPO3 par Ameos |
00001 <?php 00002 /* $Id: tbl_properties_structure.php,v 2.40 2005/07/23 12:02:37 lem9 Exp $ */ 00003 // vim: expandtab sw=4 ts=4 sts=4: 00004 00005 require_once('./libraries/grab_globals.lib.php'); 00006 require_once('./libraries/common.lib.php'); 00007 require_once('./libraries/mysql_charsets.lib.php'); 00008 00013 // workaround for IE problem: 00014 if (isset($submit_mult_change_x)) { 00015 $submit_mult = $strChange; 00016 } elseif (isset($submit_mult_drop_x)) { 00017 $submit_mult = $strDrop; 00018 } elseif (isset($submit_mult_primary_x)) { 00019 $submit_mult = $strPrimary; 00020 } elseif (isset($submit_mult_index_x)) { 00021 $submit_mult = $strIndex; 00022 } elseif (isset($submit_mult_unique_x)) { 00023 $submit_mult = $strUnique; 00024 } elseif (isset($submit_mult_fulltext_x)) { 00025 $submit_mult = $strIdxFulltext; 00026 } 00027 00028 if ((!empty($submit_mult) && isset($selected_fld)) 00029 || isset($mult_btn)) { 00030 $action = 'tbl_properties_structure.php'; 00031 $err_url = 'tbl_properties_structure.php?' . PMA_generate_common_url($db, $table); 00032 require('./mult_submits.inc.php'); 00033 } 00034 00038 require('./tbl_properties_common.php'); 00039 $url_query .= '&goto=tbl_properties_structure.php&back=tbl_properties_structure.php'; 00040 00048 require('./tbl_properties_table_info.php'); 00049 00053 if ((!empty($submit_mult) && isset($selected_fld)) 00054 || isset($mult_btn)) { 00055 $message = $strSuccess; 00056 } 00057 00061 require('./tbl_properties_links.php'); 00062 00063 // 2. Gets table keys and retains them 00064 $result = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';'); 00065 $primary = ''; 00066 $ret_keys = array(); 00067 $pk_array = array(); // will be use to emphasis prim. keys in the table view 00068 while ($row = PMA_DBI_fetch_assoc($result)) { 00069 $ret_keys[] = $row; 00070 // Backups the list of primary keys 00071 if ($row['Key_name'] == 'PRIMARY') { 00072 $primary .= $row['Column_name'] . ', '; 00073 $pk_array[$row['Column_name']] = 1; 00074 } 00075 } // end while 00076 PMA_DBI_free_result($result); 00077 00078 // 3. Get fields 00079 $fields_rs = PMA_DBI_query('SHOW FULL FIELDS FROM ' . PMA_backquote($table) . ';', NULL, PMA_DBI_QUERY_STORE); 00080 $fields_cnt = PMA_DBI_num_rows($fields_rs); 00081 00082 // Get more complete field information 00083 // For now, this is done just for MySQL 4.1.2+ new TIMESTAMP options 00084 // but later, if the analyser returns more information, it 00085 // could be executed for any MySQL version and replace 00086 // the info given by SHOW FULL FIELDS FROM. 00087 00088 if (PMA_MYSQL_INT_VERSION >= 40102) { 00089 $show_create_table_query = 'SHOW CREATE TABLE ' 00090 . PMA_backquote($db) . '.' . PMA_backquote($table); 00091 $show_create_table_res = PMA_DBI_query($show_create_table_query); 00092 list(,$show_create_table) = PMA_DBI_fetch_row($show_create_table_res); 00093 PMA_DBI_free_result($show_create_table_res); 00094 unset($show_create_table_res, $show_create_table_query); 00095 $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); 00096 } 00097 00102 $i = 0; 00103 00104 ?> 00105 00106 <!-- TABLE INFORMATION --> 00107 00108 <form method="post" action="tbl_properties_structure.php" name="fieldsForm"> 00109 <?php echo PMA_generate_common_hidden_inputs($db, $table); ?> 00110 <table border="<?php echo $cfg['Border']; ?>" cellpadding="2" cellspacing="1"> 00111 <tr> 00112 <?php echo $tbl_is_view ? '' : ' <th id="th' . ++$i . '"> </th>' . "\n"; ?> 00113 <th id="th<?php echo ++$i; ?>"> <?php echo $strField; ?> </th> 00114 <th id="th<?php echo ++$i; ?>"><?php echo $strType; ?></th> 00115 <?php echo PMA_MYSQL_INT_VERSION >= 40100 ? ' <th id="th' . ++$i . '">' . $strCollation . '</th>' . "\n" : ''; ?> 00116 <th id="th<?php echo ++$i; ?>"><?php echo $strAttr; ?></th> 00117 <th id="th<?php echo ++$i; ?>"><?php echo $strNull; ?></th> 00118 <th id="th<?php echo ++$i; ?>"><?php echo $strDefault; ?></th> 00119 <th id="th<?php echo ++$i; ?>"><?php echo $strExtra; ?></th> 00120 <?php echo $tbl_is_view ? '' : ' <th colspan="6" id="th' . ++$i . '">' . $strAction . '</th>' . "\n"; ?> 00121 </tr> 00122 00123 <?php 00124 unset($i); 00125 $comments_map = array(); 00126 $mime_map = array(); 00127 00128 if ($GLOBALS['cfg']['ShowPropertyComments']) { 00129 require_once('./libraries/relation.lib.php'); 00130 require_once('./libraries/transformations.lib.php'); 00131 00132 $cfgRelation = PMA_getRelationsParam(); 00133 00134 00135 if ($cfgRelation['commwork']) { 00136 $comments_map = PMA_getComments($db, $table); 00137 00138 if ($cfgRelation['mimework'] && $cfg['BrowseMIME']) { 00139 $mime_map = PMA_getMIME($db, $table, true); 00140 } 00141 } 00142 } 00143 00144 $i = 0; 00145 $aryFields = array(); 00146 $checked = (!empty($checkall) ? ' checked="checked"' : ''); 00147 $save_row = array(); 00148 00149 while ($row = PMA_DBI_fetch_assoc($fields_rs)) { 00150 $save_row[] = $row; 00151 $i++; 00152 $bgcolor = ($i % 2) ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo']; 00153 $aryFields[] = $row['Field']; 00154 00155 if ($GLOBALS['cfg']['BrowsePointerEnable'] == TRUE) { 00156 $on_mouse = ' onmouseover="setPointer(this, ' . $i . ', \'over\', \'' . $bgcolor . '\', \'' . $GLOBALS['cfg']['BrowsePointerColor'] . '\', \'' . $GLOBALS['cfg']['BrowseMarkerColor'] . '\');"' 00157 . ' onmouseout="setPointer(this, ' . $i . ', \'out\', \'' . $bgcolor . '\', \'' . $GLOBALS['cfg']['BrowsePointerColor'] . '\', \'' . $GLOBALS['cfg']['BrowseMarkerColor'] . '\');"'; 00158 } else { 00159 $on_mouse = ''; 00160 } 00161 if ($GLOBALS['cfg']['BrowseMarkerEnable'] == TRUE) { 00162 $on_mouse .= ' onmousedown="setPointer(this, ' . $i . ', \'click\', \'' . $bgcolor . '\', \'' . $GLOBALS['cfg']['BrowsePointerColor'] . '\', \'' . $GLOBALS['cfg']['BrowseMarkerColor'] . '\');"'; 00163 } 00164 00165 $click_mouse = ' onmousedown="document.getElementById(\'checkbox_row_' . $i . '\').checked = (document.getElementById(\'checkbox_row_' . $i . '\').checked ? false : true);" '; 00166 00167 $type = $row['Type']; 00168 // reformat mysql query output - staybyte - 9. June 2001 00169 // loic1: set or enum types: slashes single quotes inside options 00170 if (preg_match('@^(set|enum)\((.+)\)$@i', $type, $tmp)) { 00171 $tmp[2] = substr(preg_replace('@([^,])\'\'@', '\\1\\\'', ',' . $tmp[2]), 1); 00172 $type = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')'; 00173 00174 // for the case ENUM('–','“') 00175 $type = htmlspecialchars($type); 00176 00177 $type_nowrap = ''; 00178 00179 $binary = 0; 00180 $unsigned = 0; 00181 $zerofill = 0; 00182 } else { 00183 $type_nowrap = ' nowrap="nowrap"'; 00184 // strip the "BINARY" attribute, except if we find "BINARY(" because 00185 // this would be a BINARY or VARBINARY field type 00186 if (!preg_match('@BINARY[\(]@i', $type)) { 00187 $type = preg_replace('@BINARY@i', '', $type); 00188 } 00189 $type = preg_replace('@ZEROFILL@i', '', $type); 00190 $type = preg_replace('@UNSIGNED@i', '', $type); 00191 if (empty($type)) { 00192 $type = ' '; 00193 } 00194 00195 if (!preg_match('@BINARY[\(]@i', $row['Type'])) { 00196 $binary = stristr($row['Type'], 'blob') || stristr($row['Type'], 'binary'); 00197 } else { 00198 $binary = FALSE; 00199 } 00200 00201 $unsigned = stristr($row['Type'], 'unsigned'); 00202 $zerofill = stristr($row['Type'], 'zerofill'); 00203 } 00204 00205 // rabus: Divide charset from the rest of the type definition (MySQL >= 4.1) 00206 unset($field_charset); 00207 if (PMA_MYSQL_INT_VERSION >= 40100) { 00208 if ((substr($type, 0, 4) == 'char' 00209 || substr($type, 0, 7) == 'varchar' 00210 || substr($type, 0, 4) == 'text' 00211 || substr($type, 0, 8) == 'tinytext' 00212 || substr($type, 0, 10) == 'mediumtext' 00213 || substr($type, 0, 8) == 'longtext' 00214 || substr($type, 0, 3) == 'set' 00215 || substr($type, 0, 4) == 'enum' 00216 ) && !$binary) { 00217 if (strpos($type, ' character set ')) { 00218 $type = substr($type, 0, strpos($type, ' character set ')); 00219 } 00220 if (!empty($row['Collation'])) { 00221 $field_charset = $row['Collation']; 00222 } else { 00223 $field_charset = ''; 00224 } 00225 } else { 00226 $field_charset = ''; 00227 } 00228 } 00229 00230 // garvin: Display basic mimetype [MIME] 00231 if ($cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfg['BrowseMIME'] && isset($mime_map[$row['Field']]['mimetype'])) { 00232 $type_mime = '<br />MIME: ' . str_replace('_', '/', $mime_map[$row['Field']]['mimetype']); 00233 } else { 00234 $type_mime = ''; 00235 } 00236 00237 $attribute = ' '; 00238 if ($binary) { 00239 $attribute = 'BINARY'; 00240 } 00241 if ($unsigned) { 00242 $attribute = 'UNSIGNED'; 00243 } 00244 if ($zerofill) { 00245 $attribute = 'UNSIGNED ZEROFILL'; 00246 } 00247 00248 // MySQL 4.1.2+ TIMESTAMP options 00249 // (if on_update_current_timestamp is set, then it's TRUE) 00250 if (isset($analyzed_sql[0]['create_table_fields'][$row['Field']]['on_update_current_timestamp'])) { 00251 $attribute = 'ON UPDATE CURRENT_TIMESTAMP'; 00252 } 00253 00254 // here, we have a TIMESTAMP that SHOW FULL FIELDS reports as having the 00255 // NULL attribute, but SHOW CREATE TABLE says the contrary. Believe 00256 // the latter. 00257 if (!empty($analyzed_sql[0]['create_table_fields'][$row['Field']]['type']) && $analyzed_sql[0]['create_table_fields'][$row['Field']]['type'] == 'TIMESTAMP' && $analyzed_sql[0]['create_table_fields'][$row['Field']]['timestamp_not_null']) { 00258 $row['Null'] = ''; 00259 } 00260 00261 00262 if (!isset($row['Default'])) { 00263 if ($row['Null'] == 'YES') { 00264 $row['Default'] = '<i>NULL</i>'; 00265 } 00266 } else { 00267 $row['Default'] = htmlspecialchars($row['Default']); 00268 } 00269 00270 $field_encoded = urlencode($row['Field']); 00271 $field_name = htmlspecialchars($row['Field']); 00272 00273 // garvin: underline commented fields and display a hover-title (CSS only) 00274 00275 $comment_style = ''; 00276 if (isset($comments_map[$row['Field']])) { 00277 $field_name = '<span style="border-bottom: 1px dashed black;" title="' . htmlspecialchars($comments_map[$row['Field']]) . '">' . $field_name . '</span>'; 00278 } 00279 00280 if (isset($pk_array[$row['Field']])) { 00281 $field_name = '<u>' . $field_name . '</u>'; 00282 } 00283 echo "\n"; 00284 00285 $titles = array(); 00286 if ($cfg['PropertiesIconic'] == true) { 00287 // We need to copy the value or else the == 'both' check will always return true 00288 $propicon = (string)$cfg['PropertiesIconic']; 00289 00290 if ($propicon == 'both') { 00291 $iconic_spacer = '<div class="nowrap">'; 00292 } else { 00293 $iconic_spacer = ''; 00294 } 00295 00296 // images replaced 2004-05-08 by mkkeck 00297 $titles['Change'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_edit.png" alt="' . $strChange . '" title="' . $strChange . '" border="0" />'; 00298 $titles['Drop'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_drop.png" alt="' . $strDrop . '" title="' . $strDrop . '" border="0" />'; 00299 $titles['NoDrop'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_drop.png" alt="' . $strDrop . '" title="' . $strDrop . '" border="0" />'; 00300 $titles['Primary'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_primary.png" alt="' . $strPrimary . '" title="' . $strPrimary . '" border="0" />'; 00301 $titles['Index'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_index.png" alt="' . $strIndex . '" title="' . $strIndex . '" border="0" />'; 00302 $titles['Unique'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_unique.png" alt="' . $strUnique . '" title="' . $strUnique . '" border="0" />'; 00303 $titles['IdxFulltext'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'b_ftext.png" alt="' . $strIdxFulltext . '" title="' . $strIdxFulltext . '" border="0" />'; 00304 $titles['NoPrimary'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'bd_primary.png" alt="' . $strPrimary . '" title="' . $strPrimary . '" border="0" />'; 00305 $titles['NoIndex'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'bd_index.png" alt="' . $strIndex . '" title="' . $strIndex . '" border="0" />'; 00306 $titles['NoUnique'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'bd_unique.png" alt="' . $strUnique . '" title="' . $strUnique . '" border="0" />'; 00307 $titles['NoIdxFulltext'] = $iconic_spacer . '<img hspace="2" width="16" height="16" src="' . $pmaThemeImage . 'bd_ftext.png" alt="' . $strIdxFulltext . '" title="' . $strIdxFulltext . '" border="0" />'; 00308 00309 if ($propicon == 'both') { 00310 $titles['Change'] .= ' ' . $strChange . '</div>'; 00311 $titles['Drop'] .= ' ' . $strDrop . '</div>'; 00312 $titles['NoDrop'] .= ' ' . $strDrop . '</div>'; 00313 $titles['Primary'] .= ' ' . $strPrimary . '</div>'; 00314 $titles['Index'] .= ' ' . $strIndex . '</div>'; 00315 $titles['Unique'] .= ' ' . $strUnique . '</div>'; 00316 $titles['IdxFulltext' ] .= ' ' . $strIdxFulltext . '</div>'; 00317 $titles['NoPrimary'] .= ' ' . $strPrimary . '</div>'; 00318 $titles['NoIndex'] .= ' ' . $strIndex . '</div>'; 00319 $titles['NoUnique'] .= ' ' . $strUnique . '</div>'; 00320 $titles['NoIdxFulltext'] .= ' ' . $strIdxFulltext . '</div>'; 00321 } 00322 } else { 00323 $titles['Change'] = $strChange; 00324 $titles['Drop'] = $strDrop; 00325 $titles['NoDrop'] = $strDrop; 00326 $titles['Primary'] = $strPrimary; 00327 $titles['Index'] = $strIndex; 00328 $titles['Unique'] = $strUnique; 00329 $titles['IdxFulltext'] = $strIdxFulltext; 00330 $titles['NoPrimary'] = $strPrimary; 00331 $titles['NoIndex'] = $strIndex; 00332 $titles['NoUnique'] = $strUnique; 00333 $titles['NoIdxFulltext'] = $strIdxFulltext; 00334 } 00335 00336 ?> 00337 <tr <?php echo $on_mouse; ?>> 00338 <?php 00339 if (!$tbl_is_view) { 00340 ?> 00341 <td align="center" bgcolor="<?php echo $bgcolor; ?>"> 00342 <input type="checkbox" name="selected_fld[]" value="<?php echo $field_encoded; ?>" id="checkbox_row_<?php echo $i; ?>" <?php echo $checked; ?> /> 00343 </td> 00344 <?php 00345 } 00346 ?> 00347 <td <?php echo $click_mouse; ?> bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"> <label onclick="return (document.getElementById('checkbox_row_<?php echo $i; ?>') ? false : true)" for="checkbox_row_<?php echo $i; ?>"><?php echo $field_name; ?></label> </td> 00348 <td <?php echo $click_mouse; ?> bgcolor="<?php echo $bgcolor; ?>"<?php echo $type_nowrap; ?>><?php echo $type; echo $type_mime; ?><bdo dir="ltr"></bdo></td> 00349 <?php echo PMA_MYSQL_INT_VERSION >= 40100 ? ' <td bgcolor="' . $bgcolor . '" ' . $click_mouse . '>' . (empty($field_charset) ? ' ' : '<dfn title="' . PMA_getCollationDescr($field_charset) . '">' . $field_charset . '</dfn>') . '</td>' . "\n" : '' ?> 00350 <td <?php echo $click_mouse; ?> bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap" style="font-size: <?php echo $font_smallest; ?>"><?php echo $attribute; ?></td> 00351 <td <?php echo $click_mouse; ?> bgcolor="<?php echo $bgcolor; ?>"><?php echo (($row['Null'] == 'YES') ? $strYes : $strNo); ?> </td> 00352 <td <?php echo $click_mouse; ?> bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"><?php if (isset($row['Default'])) echo $row['Default']; ?> </td> 00353 <td <?php echo $click_mouse; ?> bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"><?php echo $row['Extra']; ?> </td> 00354 <?php 00355 if (!$tbl_is_view) { 00356 ?> 00357 <td align="center" bgcolor="<?php echo $bgcolor; ?>"> 00358 <a href="tbl_alter.php?<?php echo $url_query; ?>&field=<?php echo $field_encoded; ?>"> 00359 <?php echo $titles['Change']; ?></a> 00360 </td> 00361 <td align="center" bgcolor="<?php echo $bgcolor; ?>"> 00362 <?php 00363 // loic1: Drop field only if there is more than one field in the table 00364 if ($fields_cnt > 1) { 00365 echo "\n"; 00366 ?> 00367 <a href="sql.php?<?php echo $url_query; ?>&sql_query=<?php echo urlencode('ALTER TABLE ' . PMA_backquote($table) . ' DROP ' . PMA_backquote($row['Field'])); ?>&cpurge=1&purgekey=<?php echo urlencode($row['Field']); ?>&zero_rows=<?php echo urlencode(sprintf($strFieldHasBeenDropped, htmlspecialchars($row['Field']))); ?>" 00368 onclick="return confirmLink(this, 'ALTER TABLE <?php echo PMA_jsFormat($table); ?> DROP <?php echo PMA_jsFormat($row['Field']); ?>')"> 00369 <?php echo $titles['Drop']; ?></a> 00370 <?php 00371 } else { 00372 echo "\n" . ' ' . $titles['NoDrop']; 00373 } 00374 echo "\n"; 00375 ?> 00376 </td> 00377 <td align="center" bgcolor="<?php echo $bgcolor; ?>"> 00378 <?php 00379 if ($type == 'text' || $type == 'blob') { 00380 echo $titles['NoPrimary'] . "\n"; 00381 } else { 00382 echo "\n"; 00383 ?> 00384 <a href="sql.php?<?php echo $url_query; ?>&sql_query=<?php echo urlencode('ALTER TABLE ' . PMA_backquote($table) . ( empty($primary) ? '' : ' DROP PRIMARY KEY,') . ' ADD PRIMARY KEY(' . PMA_backquote($row['Field']) . ')'); ?>&zero_rows=<?php echo urlencode(sprintf($strAPrimaryKey, htmlspecialchars($row['Field']))); ?>" 00385 onclick="return confirmLink(this, 'ALTER TABLE <?php echo PMA_jsFormat($table) . ( empty($primary) ? '' : ' DROP PRIMARY KEY,'); ?> ADD PRIMARY KEY(<?php echo PMA_jsFormat($row['Field']); ?>)')"> 00386 <?php echo $titles['Primary']; ?></a> 00387 <?php 00388 } 00389 echo "\n"; 00390 ?> 00391 </td> 00392 <td align="center" bgcolor="<?php echo $bgcolor; ?>"> 00393 <?php 00394 if ($type == 'text' || $type == 'blob') { 00395 echo $titles['NoIndex'] . "\n"; 00396 } else { 00397 echo "\n"; 00398 ?> 00399 <a href="sql.php?<?php echo $url_query; ?>&sql_query=<?php echo urlencode('ALTER TABLE ' . PMA_backquote($table) . ' ADD INDEX(' . PMA_backquote($row['Field']) . ')'); ?>&zero_rows=<?php echo urlencode(sprintf($strAnIndex ,htmlspecialchars($row['Field']))); ?>"> 00400 <?php echo $titles['Index']; ?></a> 00401 <?php 00402 } 00403 echo "\n"; 00404 ?> 00405 </td> 00406 <td align="center" bgcolor="<?php echo $bgcolor; ?>"> 00407 <?php 00408 if ($type == 'text' || $type == 'blob') { 00409 echo $titles['NoUnique'] . "\n"; 00410 } else { 00411 echo "\n"; 00412 ?> 00413 <a href="sql.php?<?php echo $url_query; ?>&sql_query=<?php echo urlencode('ALTER TABLE ' . PMA_backquote($table) . ' ADD UNIQUE(' . PMA_backquote($row['Field']) . ')'); ?>&zero_rows=<?php echo urlencode(sprintf($strAnIndex , htmlspecialchars($row['Field']))); ?>"> 00414 <?php echo $titles['Unique']; ?></a> 00415 <?php 00416 } 00417 echo "\n"; 00418 ?> 00419 </td> 00420 <?php 00421 if ((!empty($tbl_type) && $tbl_type == 'MYISAM') 00422 && (strpos(' ' . $type, 'text') || strpos(' ' . $type, 'varchar'))) { 00423 echo "\n"; 00424 ?> 00425 <td align="center" bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"> 00426 <a href="sql.php?<?php echo $url_query; ?>&sql_query=<?php echo urlencode('ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT(' . PMA_backquote($row['Field']) . ')'); ?>&zero_rows=<?php echo urlencode(sprintf($strAnIndex , htmlspecialchars($row['Field']))); ?>"> 00427 <?php echo $titles['IdxFulltext']; ?></a> 00428 </td> 00429 <?php 00430 } else { 00431 echo "\n"; 00432 ?> 00433 <td align="center" bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"> 00434 <?php echo $titles['NoIdxFulltext'] . "\n"; ?> 00435 </td> 00436 <?php 00437 } // end if... else... 00438 echo "\n"; 00439 } // end if (!$tbl_is_view) 00440 ?> 00441 </tr> 00442 <?php 00443 unset($field_charset); 00444 } // end while 00445 00446 echo "\n"; 00447 00448 if (!$tbl_is_view) { 00449 00450 $checkall_url = 'tbl_properties_structure.php?' . PMA_generate_common_url($db,$table); 00451 ?> 00452 00453 <tr> 00454 <td colspan="<?php echo PMA_MYSQL_INT_VERSION >= 40100 ? '14' : '13'; ?>"> 00455 <table> 00456 <tr> 00457 <td> 00458 <img src="<?php echo $pmaThemeImage . 'arrow_' . $text_dir . '.png'; ?>" border="0" width="38" height="22" alt="<?php echo $strWithChecked; ?>" /> 00459 <a href="<?php echo $checkall_url; ?>&checkall=1" onclick="setCheckboxes('fieldsForm', true); return false;"> 00460 <?php echo $strCheckAll; ?></a> 00461 / 00462 <a href="<?php echo $checkall_url; ?>" onclick="setCheckboxes('fieldsForm', false); return false;"> 00463 <?php echo $strUncheckAll; ?></a> 00464 00465 <i><?php echo $strWithChecked; ?></i> 00466 </td> 00467 <td> 00468 <?php 00469 00470 if ($cfg['PropertiesIconic']) { 00471 PMA_buttonOrImage('submit_mult', 'mult_submit', 'submit_mult_change', $strChange, 'b_edit.png'); 00472 // Drop button if there is at least two fields 00473 if ($fields_cnt > 1) { 00474 PMA_buttonOrImage('submit_mult', 'mult_submit', 'submit_mult_drop', $strDrop, 'b_drop.png'); 00475 } 00476 PMA_buttonOrImage('submit_mult', 'mult_submit', 'submit_mult_primary', $strPrimary, 'b_primary.png'); 00477 PMA_buttonOrImage('submit_mult', 'mult_submit', 'submit_mult_index', $strIndex, 'b_index.png'); 00478 PMA_buttonOrImage('submit_mult', 'mult_submit', 'submit_mult_unique', $strUnique, 'b_unique.png'); 00479 if ((!empty($tbl_type) && $tbl_type == 'MYISAM')) { 00480 PMA_buttonOrImage('submit_mult', 'mult_submit', 'submit_mult_fulltext', $strIdxFulltext, 'b_ftext.png'); 00481 } 00482 } else { 00483 echo '<input type="submit" name="submit_mult" value="' . $strChange . '" title="' . $strChange . '" />' . "\n"; 00484 // Drop button if there is at least two fields 00485 if ($fields_cnt > 1) { 00486 echo ' <i>' . $strOr . '</i> ' . "\n" 00487 . '<input type="submit" name="submit_mult" value="' . $strDrop . '" title="' . $strDrop . '" />' . "\n"; 00488 } 00489 echo ' <i>' . $strOr . '</i> ' . "\n" 00490 . '<input type="submit" name="submit_mult" value="' . $strPrimary . '" title="' . $strPrimary . '" />' . "\n"; 00491 echo ' <i>' . $strOr . '</i> ' . "\n" 00492 . '<input type="submit" name="submit_mult" value="' . $strIndex . '" title="' . $strIndex . '" />' . "\n"; 00493 echo ' <i>' . $strOr . '</i> ' . "\n" 00494 . '<input type="submit" name="submit_mult" value="' . $strUnique . '" title="' . $strUnique . '" />' . "\n"; 00495 if ((!empty($tbl_type) && $tbl_type == 'MYISAM')) { 00496 echo ' <i>' . $strOr . '</i> ' . "\n" 00497 . '<input type="submit" name="submit_mult" value="' . $strIdxFulltext . '" title="' . $strIdxFulltext . '" />' . "\n"; 00498 } 00499 } 00500 00501 ?> 00502 </td> 00503 </tr> 00504 </table> 00505 </td> 00506 </tr> 00507 <?php 00508 } 00509 ?> 00510 </table> 00511 </form> 00512 00513 <hr /> 00514 00515 00516 <?php 00517 if (!$tbl_is_view) { 00521 ?> 00522 <!-- TABLE WORK --> 00523 <!-- Printable view of the table --> 00524 <a href="tbl_printview.php?<?php echo $url_query; ?>"><?php 00525 if ($cfg['PropertiesIconic']) { 00526 echo '<img src="' . $pmaThemeImage . 'b_print.png" border="0" hspace="2" align="middle" width="16" height="16" alt="' . $strPrintView . '"/>'; 00527 } 00528 echo $strPrintView; 00529 ?></a> 00530 00531 <?php 00532 // if internal relations are available, or the table type is INNODB 00533 // ($tbl_type comes from tbl_properties_table_info.php) 00534 00535 if ($cfg['Server']['relation'] || $tbl_type=="INNODB") { 00536 ?> 00537 <!-- Work on Relations --> 00538 <a href="tbl_relation.php?<?php echo $url_query; ?>"><?php 00539 if ($cfg['PropertiesIconic']) { 00540 echo '<img src="' . $pmaThemeImage . 'b_relations.png" border="0" hspace="2" align="middle" width="16" height="16" alt="' . $strRelationView . '"/>'; 00541 } 00542 echo $strRelationView; 00543 ?></a> 00544 <?php 00545 } 00546 ?> 00547 <!-- Let MySQL propose the optimal structure --> 00548 <a href="sql.php?<?php echo $url_query; ?>&session_max_rows=all&sql_query=<?php echo urlencode('SELECT * FROM ' . PMA_backquote($table) . ' PROCEDURE ANALYSE()'); ?>"><?php 00549 if ($cfg['PropertiesIconic']) { 00550 echo '<img src="' . $pmaThemeImage . 'b_tblanalyse.png" border="0" hspace="2" align="middle" width="16" height="16" alt="' . $strStructPropose . '" />'; 00551 } 00552 echo $strStructPropose; 00553 ?></a><?php 00554 echo PMA_showMySQLDocu('Extending_MySQL', 'procedure_analyse') . "\n"; 00555 ?><br /> 00556 <!-- Add some new fields --> 00557 <form method="post" action="tbl_addfield.php" 00558 onsubmit="return checkFormElementInRange(this, 'num_fields', '<?php echo str_replace('\'', '\\\'', $GLOBALS['strInvalidFieldAddCount']); ?>', 1)"> 00559 <?php 00560 echo PMA_generate_common_hidden_inputs($db, $table); 00561 if ($cfg['PropertiesIconic']) { 00562 echo '<img src="' . $pmaThemeImage . 'b_insrow.png" width="16" height="16" border="0" hspace="2" align="middle" alt="' . $strAddNewField . '"/>'; 00563 } 00564 echo sprintf($strAddFields, '<input type="text" name="num_fields" size="2" maxlength="2" value="1" style="vertical-align: middle" onfocus="this.select()" />'); 00565 ?> 00566 <input type="radio" name="field_where" id="radio_field_where_last" value="last" checked="checked" /><label for="radio_field_where_last"><?php echo $strAtEndOfTable; ?></label> 00567 <input type="radio" name="field_where" id="radio_field_where_first" value="first" /><label for="radio_field_where_first"><?php echo $strAtBeginningOfTable; ?></label> 00568 <input type="radio" name="field_where" id="radio_field_where_after" value="after" /><?php 00569 $fieldOptions = '</label><select name="after_field" style="vertical-align: middle" onclick="this.form.field_where[2].checked=true" onchange="this.form.field_where[2].checked=true">'; 00570 foreach ($aryFields AS $fieldname) { 00571 $fieldOptions .= '<option value="' . htmlspecialchars($fieldname) . '">' . htmlspecialchars($fieldname) . '</option>' . "\n"; 00572 } 00573 unset($aryFields); 00574 $fieldOptions .= '</select><label for="radio_field_where_after">'; 00575 echo str_replace('<label for="radio_field_where_after"></label>', '', '<label for="radio_field_where_after">' . sprintf($strAfter, $fieldOptions) . '</label>') . "\n"; 00576 ?> 00577 <input type="submit" value="<?php echo $strGo; ?>" style="vertical-align: middle" /> 00578 </form> 00579 00580 <hr /> 00581 00582 <?php 00583 } 00584 00589 if ($fields_cnt > 20) { 00590 ?> 00591 <!-- Browse links --> 00592 <?php 00593 echo "\n"; 00594 require('./tbl_properties_links.php'); 00595 } // end if ($fields_cnt > 20) 00596 echo "\n\n"; 00597 00598 00599 if (!$tbl_is_view) { 00603 ?> 00604 <!-- Indexes, space usage and row statistics --> 00605 <table border="0" cellspacing="0" cellpadding="0"> 00606 <tr> 00607 <td valign="top"> 00608 <?php 00609 define('PMA_IDX_INCLUDED', 1); 00610 require ('./tbl_indexes.php'); 00611 ?> 00612 </td> 00613 00614 <?php 00618 // BEGIN - Calc Table Space - staybyte - 9 June 2001 00619 // loic1, 22 feb. 2002: updated with patch from 00620 // Joshua Nye <josh at boxcarmedia.com> to get valid 00621 // statistics whatever is the table type 00622 if ($cfg['ShowStats']) { 00623 $nonisam = FALSE; 00624 $is_innodb = (isset($showtable['Type']) && $showtable['Type'] == 'InnoDB'); 00625 if (isset($showtable['Type']) && !preg_match('@ISAM|HEAP@i', $showtable['Type'])) { 00626 $nonisam = TRUE; 00627 } 00628 if ($nonisam == FALSE || $is_innodb) { 00629 // Gets some sizes 00630 $mergetable = FALSE; 00631 if (isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM') { 00632 $mergetable = TRUE; 00633 } 00634 list($data_size, $data_unit) = PMA_formatByteDown($showtable['Data_length']); 00635 if ($mergetable == FALSE) { 00636 list($index_size, $index_unit) = PMA_formatByteDown($showtable['Index_length']); 00637 } 00638 if (isset($showtable['Data_free']) && $showtable['Data_free'] > 0) { 00639 list($free_size, $free_unit) = PMA_formatByteDown($showtable['Data_free']); 00640 list($effect_size, $effect_unit) = PMA_formatByteDown($showtable['Data_length'] + $showtable['Index_length'] - $showtable['Data_free']); 00641 } else { 00642 list($effect_size, $effect_unit) = PMA_formatByteDown($showtable['Data_length'] + $showtable['Index_length']); 00643 } 00644 list($tot_size, $tot_unit) = PMA_formatByteDown($showtable['Data_length'] + $showtable['Index_length']); 00645 if ($table_info_num_rows > 0) { 00646 list($avg_size, $avg_unit) = PMA_formatByteDown(($showtable['Data_length'] + $showtable['Index_length']) / $showtable['Rows'], 6, 1); 00647 } 00648 00649 // Displays them 00650 ?> 00651 00652 <!-- Space usage --> 00653 <td width="20"> </td> 00654 <td valign="top"> 00655 <a name="showusage"></a> 00656 <table border="<?php echo $cfg['Border']; ?>" cellpadding="2" cellspacing="1"> 00657 <tr><td class="tblHeaders" colspan="3"><?php echo $strSpaceUsage . ': ' . "\n"; ?></td></tr> 00658 <tr> 00659 <th><?php echo $strType; ?></th> 00660 <th colspan="2" align="center"><?php echo $strUsage; ?></th> 00661 </tr> 00662 <tr> 00663 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>" style="padding-right: 10px"><?php echo $strData; ?></td> 00664 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>" align="right" nowrap="nowrap"><?php echo $data_size; ?></td> 00665 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>"><?php echo $data_unit; ?></td> 00666 </tr> 00667 <?php 00668 if (isset($index_size)) { 00669 echo "\n"; 00670 ?> 00671 <tr> 00672 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>" style="padding-right: 10px"><?php echo $strIndex; ?></td> 00673 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>" align="right" nowrap="nowrap"><?php echo $index_size; ?></td> 00674 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>"><?php echo $index_unit; ?></td> 00675 </tr> 00676 <?php 00677 } 00678 if (isset($free_size)) { 00679 echo "\n"; 00680 ?> 00681 <tr style="color: #bb0000"> 00682 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>" style="padding-right: 10px"><?php echo $strOverhead; ?></td> 00683 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>" align="right" nowrap="nowrap"><?php echo $free_size; ?></td> 00684 <td bgcolor="<?php echo $cfg['BgcolorTwo']; ?>"><?php echo $free_unit; ?></td> 00685 </tr> 00686 <tr> 00687 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>" style="padding-right: 10px"><?php echo $strEffective; ?></td> 00688 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>" align="right" nowrap="nowrap"><?php echo $effect_size; ?></td> 00689 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>"><?php echo $effect_unit; ?></td> 00690 </tr> 00691 <?php 00692 } 00693 if (isset($tot_size) && $mergetable == FALSE) { 00694 echo "\n"; 00695 ?> 00696 <tr> 00697 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>" style="padding-right: 10px"><?php echo $strTotalUC; ?></td> 00698 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>" align="right" nowrap="nowrap"><?php echo $tot_size; ?></td> 00699 <td bgcolor="<?php echo $cfg['BgcolorOne']; ?>"><?php echo $tot_unit; ?></td> 00700 </tr> 00701 <?php 00702 } 00703 // Optimize link if overhead 00704 if (isset($free_size) && ($tbl_type == 'MYISAM' || $tbl_type == 'BDB')) { 00705 echo "\n"; 00706 ?> 00707 <tr> 00708 <td colspan="3" align="center" bgcolor="<?php echo $cfg['BgcolorTwo']; ?>"> 00709 <a href="sql.php?<?php echo $url_query; ?>&pos=0&sql_query=<?php echo urlencode('OPTIMIZE TABLE ' . PMA_backquote($table)); ?>"><?php 00710 if ($cfg['PropertiesIconic']) { 00711 echo '<img src="' . $pmaThemeImage . 'b_tbloptimize.png" width="16" height="16" border="0" hspace="2" align="middle" alt="' . $strOptimizeTable. '" />'; 00712 } 00713 echo $strOptimizeTable; 00714 ?></a> 00715 </td> 00716 </tr> 00717 <?php 00718 } 00719 echo "\n"; 00720 ?> 00721 </table> 00722 </td> 00723 00724 <!-- Rows Statistic --> 00725 <td width="20"> </td> 00726 <td valign="top"> 00727 <table border="<?php echo $cfg['Border']; ?>" cellpadding="2" cellspacing="1"> 00728 <tr><td class="tblHeaders" colspan="2"><?php echo $strRowsStatistic . ': ' . "\n"; ?></td></tr> 00729 <tr> 00730 <th><?php echo $strStatement; ?></th> 00731 <th align="center"><?php echo $strValue; ?></th> 00732 </tr> 00733 <?php 00734 $i = 0; 00735 if (isset($showtable['Row_format'])) { 00736 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00737 echo "\n"; 00738 ?> 00739 <tr> 00740 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strFormat; ?></td> 00741 <td bgcolor="<?php echo $bgcolor; ?>" align="<?php echo $cell_align_left; ?>" nowrap="nowrap"> 00742 <?php 00743 echo ' '; 00744 if ($showtable['Row_format'] == 'Fixed') { 00745 echo $strFixed; 00746 } 00747 else if ($showtable['Row_format'] == 'Dynamic') { 00748 echo $strDynamic; 00749 } 00750 else { 00751 echo $showtable['Row_format']; 00752 } 00753 echo "\n"; 00754 ?> 00755 </td> 00756 </tr> 00757 <?php 00758 } 00759 if (PMA_MYSQL_INT_VERSION >= 40100 && !empty($tbl_collation)) { 00760 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00761 ?> 00762 <tr> 00763 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strCollation; ?></td> 00764 <td bgcolor="<?php echo $bgcolor; ?>" align="<?php echo $cell_align_left; ?>" nowrap="nowrap"> 00765 <?php 00766 echo '<dfn title="' . PMA_getCollationDescr($tbl_collation) . '">' . $tbl_collation . '</dfn>'; 00767 ?> 00768 </td> 00769 </tr> 00770 <?php 00771 } 00772 if (!$is_innodb && isset($showtable['Rows'])) { 00773 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00774 echo "\n"; 00775 ?> 00776 <tr> 00777 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strRows; ?></td> 00778 <td bgcolor="<?php echo $bgcolor; ?>" align="right" nowrap="nowrap"> 00779 <?php echo number_format($showtable['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?> 00780 </td> 00781 </tr> 00782 <?php 00783 } 00784 if (!$is_innodb && isset($showtable['Avg_row_length']) && $showtable['Avg_row_length'] > 0) { 00785 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00786 echo "\n"; 00787 ?> 00788 <tr> 00789 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strRowLength; ?> ø</td> 00790 <td bgcolor="<?php echo $bgcolor; ?>" align="right" nowrap="nowrap"> 00791 <?php echo number_format($showtable['Avg_row_length'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?> 00792 </td> 00793 </tr> 00794 <?php 00795 } 00796 if (!$is_innodb && isset($showtable['Data_length']) && $showtable['Rows'] > 0 && $mergetable == FALSE) { 00797 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00798 echo "\n"; 00799 ?> 00800 <tr> 00801 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strRowSize; ?> ø</td> 00802 <td bgcolor="<?php echo $bgcolor; ?>" align="right" nowrap="nowrap"> 00803 <?php echo $avg_size . ' ' . $avg_unit . "\n"; ?> 00804 </td> 00805 </tr> 00806 <?php 00807 } 00808 if (isset($showtable['Auto_increment'])) { 00809 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00810 echo "\n"; 00811 ?> 00812 <tr> 00813 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strNext; ?> Autoindex</td> 00814 <td bgcolor="<?php echo $bgcolor; ?>" align="right" nowrap="nowrap"> 00815 <?php echo number_format($showtable['Auto_increment'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?> 00816 </td> 00817 </tr> 00818 <?php 00819 } 00820 echo "\n"; 00821 00822 if (isset($showtable['Create_time'])) { 00823 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00824 echo "\n"; 00825 ?> 00826 <tr> 00827 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strStatCreateTime; ?></td> 00828 <td<?php if($theme=='original' || $theme==''){ echo ' style="font-size:' . $font_smaller . '"'; } ?> align="right" bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"> 00829 <?php echo PMA_localisedDate(strtotime($showtable['Create_time'])) . "\n"; ?> 00830 </td> 00831 </tr> 00832 <?php 00833 } 00834 echo "\n"; 00835 00836 if (isset($showtable['Update_time'])) { 00837 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00838 echo "\n"; 00839 ?> 00840 <tr> 00841 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strStatUpdateTime; ?></td> 00842 <td<?php if($theme=='original' || $theme==''){ echo ' style="font-size:' . $font_smaller . '"'; } ?> align="right" bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"> 00843 <?php echo PMA_localisedDate(strtotime($showtable['Update_time'])) . "\n"; ?> 00844 </td> 00845 </tr> 00846 <?php 00847 } 00848 echo "\n"; 00849 00850 if (isset($showtable['Check_time'])) { 00851 $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); 00852 echo "\n"; 00853 ?> 00854 <tr> 00855 <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $strStatCheckTime; ?></td> 00856 <td<?php if($theme=='original' || $theme==''){ echo ' style="font-size:' . $font_smaller . '"'; } ?> align="right" bgcolor="<?php echo $bgcolor; ?>" nowrap="nowrap"> 00857 <?php echo PMA_localisedDate(strtotime($showtable['Check_time'])) . "\n"; ?> 00858 </td> 00859 </tr> 00860 <?php 00861 } 00862 echo "\n"; 00863 ?> 00864 </table> 00865 </td> 00866 <?php 00867 } 00868 } 00869 // END - Calc Table Space 00870 echo "\n"; 00871 ?> 00872 </tr> 00873 </table> 00874 <hr /> 00875 <?php 00876 } // end if (!$tbl_is_view) 00877 00881 $goto = 'tbl_properties_structure.php'; 00882 require('./tbl_query_box.php'); 00883 00887 require_once('./footer.inc.php'); 00888 ?>