diff --git a/ChangeLog b/ChangeLog index 2c70941ac..cace554ba 100755 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,14 @@ phpMyAdmin - Changelog $Id$ $Source$ +2003-12-29 Alexander M. Turek + * db_details_structure.php, libraries/mysql_charsets.lib.php: + - display database collation (MySQL >= 4.1.1); + - list collations of all tables. + * tbl_properties_strcuture, tbl_properties_table_info.php: + - Changed "Charset" label to "Collation" because it fits better; + - The column collations weren't displayed with MySQL 5.0. + 2003-12-28 Marc Delisle ### 2.5.5 released diff --git a/db_details_structure.php b/db_details_structure.php index c79a84520..69b06a605 100644 --- a/db_details_structure.php +++ b/db_details_structure.php @@ -3,14 +3,16 @@ // vim: expandtab sw=4 ts=4 sts=4: +require_once('./libraries/grab_globals.lib.php'); +require_once('./libraries/common.lib.php'); +require_once('./libraries/mysql_charsets.lib.php'); + + /** * Prepares the tables list if the user where not redirected to this script * because there is no table in the database ($is_info is TRUE) */ if (empty($is_info)) { - require_once('./libraries/grab_globals.lib.php'); - require_once('./libraries/common.lib.php'); - // Drops/deletes/etc. multiple tables if required if ((!empty($submit_mult) && isset($selected_tbl)) || isset($mult_btn)) { @@ -37,41 +39,40 @@ if (empty($is_info)) { // Display function function pma_TableHeader($alternate = FALSE) { - if ($alternate) { -?> - - - - - - - - -
  
- - - - - - 1)) { - ?> - - - ' . $GLOBALS['strSize'] . ''; - echo ''; - } - echo "\n"; - ?> - -' . "\n" + . ' ' . "\n" + . ' ' . "\n" + . ' ' . "\n" + . ' ' . "\n" + . ' ' . "\n"; + if (!$alternate) { + if (!($GLOBALS['cfg']['PropertiesNumColumns'] > 1)) { + echo ' ' . "\n"; + if (PMA_MYSQL_INT_VERSION >= 40100) { + echo ' ' . "\n"; + } + } + if ($GLOBALS['cfg']['ShowStats']) { + echo ' ' . "\n" + . ' ' . "\n"; + } + echo "\n"; } + echo ' ' . "\n"; } @@ -378,11 +379,14 @@ else { 1)) { - ?> - - ' . "\n" + . '  ' . (isset($sts_data['Type']) ? $sts_data['Type'] : ' ') . ' ' . "\n" + . ' ' . "\n"; + if (PMA_MYSQL_INT_VERSION >= 40100) { + echo ' ' . "\n"; + } } if ($cfg['ShowStats']) { @@ -439,11 +443,15 @@ else { 1)) { - ?> - - ' . "\n" + . ' --' . "\n" + . ' ' . "\n"; + if (PMA_MYSQL_INT_VERSION >= 40100) { + $db_collation = PMA_getDbCollation($db); + echo ' ' . "\n"; + } } if ($cfg['ShowStats']) { diff --git a/libraries/mysql_charsets.lib.php b/libraries/mysql_charsets.lib.php index 1f5da62b0..5a9e43346 100644 --- a/libraries/mysql_charsets.lib.php +++ b/libraries/mysql_charsets.lib.php @@ -224,6 +224,36 @@ if (PMA_MYSQL_INT_VERSION >= 40100){ return $descr; } + function PMA_getDbCollation($db) { + global $dbh; + + if (PMA_MYSQL_INT_VERSION >= 40101) { + // MySQL 4.1.0 does not support seperate charset settings + // for databases. + + $sql_query = 'SHOW CREATE DATABASE `' . $db . '`;'; + $res = PMA_mysql_query($sql_query, $dbh) or PMA_mysqlDie(PMA_mysql_error($dbh), $sql_query); + $row = PMA_mysql_fetch_row($res); + mysql_free_result($res); + $tokenized = explode(' ', $row[1]); + unset($row, $res, $sql_query); + + for ($i = 1; $i + 3 < count($tokenized); $i++) { + if ($tokenized[$i] == 'DEFAULT' && $tokenized[$i + 1] == 'CHARACTER' && $tokenized[$i + 2] == 'SET') { + // We've found the character set! + if (isset($tokenized[$i + 5]) && $tokenized[$i + 4] == 'COLLATE') { + return $tokenized[$i + 5]; // We found the collation! + } else { + // We did not find the collation, so let's return the + // default collation for the charset we've found. + return $GLOBALS['mysql_default_collations'][$tokenized [$i + 3]]; + } + } + } + } + return ''; + } + } ?> diff --git a/tbl_properties_structure.php b/tbl_properties_structure.php index eff1019bd..7236458e5 100644 --- a/tbl_properties_structure.php +++ b/tbl_properties_structure.php @@ -62,7 +62,7 @@ while ($row = PMA_mysql_fetch_array($result)) { mysql_free_result($result); // 3. Get fields -$local_query = 'SHOW FIELDS FROM ' . PMA_backquote($table); +$local_query = 'SHOW FULL FIELDS FROM ' . PMA_backquote($table); $fields_rs = PMA_mysql_query($local_query) or PMA_mysqlDie('', $local_query, '', $err_url_0); $fields_cnt = mysql_num_rows($fields_rs); @@ -73,7 +73,7 @@ $fields_cnt = mysql_num_rows($fields_rs); */ ?> - + @@ -83,7 +83,7 @@ $fields_cnt = mysql_num_rows($fields_rs); -= 40100 ? ' ' . "\n" : ''; ?> += 40100 ? ' ' . "\n" : ''; ?> @@ -596,7 +596,7 @@ if ($cfg['ShowStats']) { $bgcolor = ((++$i%2) ? $cfg['BgcolorTwo'] : $cfg['BgcolorOne']); ?> - +
  ' . $GLOBALS['strOverhead'] . '
' . "\n" + . '  ' . $GLOBALS['strTable'] . ' ' . "\n" + . ' ' . "\n" + . '  ' . $GLOBALS['strAction'] . ' ' . "\n" + . ' ' . "\n" + . '  ' . $GLOBALS['strRecords'] . ' ' . "\n" + . ' ' . "\n" + . '  ' . $GLOBALS['strType'] . ' ' . "\n" + . ' ' . "\n" + . '  ' . $GLOBALS['strCollation'] . ' ' . "\n" + . ' ' . "\n" + . '  ' . $GLOBALS['strSize'] . ' ' . "\n" + . ' ' . "\n" + . '  ' . $GLOBALS['strOverhead'] . ' ' . "\n" + . '
-    - ' . "\n" + . '  ' . (isset($sts_data['Collation']) ? '' . $sts_data['Collation'] . '' : '---') . ' ' . "\n" + . ' - -- - ' . "\n" + . '  ' . $db_collation . ' ' . "\n" + . '
   ' . $strCharset . '' . $strCollation . '
' . $tbl_charset . ''; diff --git a/tbl_properties_table_info.php b/tbl_properties_table_info.php index d54d19db9..ee9761861 100644 --- a/tbl_properties_table_info.php +++ b/tbl_properties_table_info.php @@ -19,7 +19,7 @@ $local_query = 'SHOW TABLE STATUS LIKE \'' . PMA_sqlAddslashes($table, T $table_info_result = PMA_mysql_query($local_query) or PMA_mysqlDie('', $local_query, '', $err_url_0); $showtable = PMA_mysql_fetch_array($table_info_result); $tbl_type = strtoupper($showtable['Type']); -$tbl_charset = empty($showtable['Charset']) ? '' : $showtable['Charset']; +$tbl_charset = empty($showtable['Collation']) ? '' : $showtable['Collation']; $table_info_num_rows = (isset($showtable['Rows']) ? $showtable['Rows'] : 0); $show_comment = (isset($showtable['Comment']) ? $showtable['Comment'] : ''); $auto_increment = (isset($showtable['Auto_increment']) ? $showtable['Auto_increment'] : '');