diff --git a/db_printview.php3 b/db_printview.php3
index 6c57c83ef..63285e0b4 100755
--- a/db_printview.php3
+++ b/db_printview.php3
@@ -6,51 +6,216 @@
* Gets the variables sent or posted to this script, then displays headers
*/
require('./grab_globals.inc.php3');
-if (!isset($message)) {
- include('./header.inc.php3');
-} else {
- show_message($message);
-}
+require('./header.inc.php3');
/**
- * Get the list and count of the tables
+ * Gets the list of the table in the current db and informations about these
+ * tables if possible
*/
-$tables = mysql_list_tables($db);
-$num_tables = @mysql_numrows($tables);
+// staybyte: speedup view on locked tables - 11 June 2001
+if (MYSQL_INT_VERSION >= 32303) {
+ // Special speedup for newer MySQL Versions (in 4.0 format changed)
+ if ($cfgSkipLockedTables == TRUE && MYSQL_INT_VERSION >= 32330) {
+ $local_query = 'SHOW OPEN TABLES FROM ' . backquote($db);
+ $result = mysql_query($query) or mysql_die('', $local_query);
+ // Blending out tables in use
+ if ($result != FALSE && mysql_num_rows($result) > 0) {
+ while ($tmp = mysql_fetch_array($result)) {
+ // if in use memorize tablename
+ if (eregi('in_use=[1-9]+', $tmp)) {
+ $sot_cache[$tmp[0]] = TRUE;
+ }
+ }
+ mysql_free_result($result);
+
+ if (isset($sot_cache)) {
+ $local_query = 'SHOW TABLES FROM ' . backquote($db);
+ $result = mysql_query($query) or mysql_die('', $local_query);
+ if ($result != FALSE && mysql_num_rows($result) > 0) {
+ while ($tmp = mysql_fetch_array($result)) {
+ if (!isset($sot_cache[$tmp[0]])) {
+ $local_query = 'SHOW TABLE STATUS FROM ' . backquote($db) . ' LIKE \'' . addslashes($tmp[0]) . '\'';
+ $sts_result = mysql_query($local_query) or mysql_die('', $local_query);
+ $sts_tmp = mysql_fetch_array($sts_result);
+ $tables[] = $sts_tmp;
+ } else { // table in use
+ $tables[] = array('Name' => $tmp[0]);
+ }
+ }
+ mysql_free_result($result);
+ $sot_ready = TRUE;
+ }
+ }
+ }
+ }
+ if (!isset($sot_ready)) {
+ $local_query = 'SHOW TABLE STATUS FROM ' . backquote($db);
+ $result = mysql_query($local_query) or mysql_die('', $local_query);
+ if ($result != FALSE && mysql_num_rows($result) > 0) {
+ while ($sts_tmp = mysql_fetch_array($result)) {
+ $tables[] = $sts_tmp;
+ }
+ mysql_free_result($result);
+ }
+ }
+ $num_tables = (isset($tables) ? count($tables) : 0);
+} // end if (MYSQL_INT_VERSION >= 32303)
+else {
+ $result = mysql_list_tables($db);
+ $num_tables = @mysql_numrows($result);
+ for ($i = 0; $i < $num_tables; $i++) {
+ $tables[] = mysql_tablename($result, $i);
+ }
+ mysql_free_result($result);
+}
/**
* If there is at least one table, displays the printer friendly view, else
* an error message
*/
-// No table
+// 1. No table
if ($num_tables == 0) {
echo $strNoTablesFound;
}
-// At least one table
-else {
- $i = 0;
+// 2. Shows table informations on mysql >= 3.23 - staybyte - 11 June 2001
+else if (MYSQL_INT_VERSION >= 32300) {
?>
-
+
- |
+ |
+ |
+ |
+ |
+
+
+
+
+
+ |
+ 0) {
+ list($formated_size, $unit) = format_byte_down($tblsize, 3, 1);
+ } else {
+ list($formated_size, $unit) = format_byte_down($tblsize, 3, 0);
+ }
+ } else {
+ $formated_size = ' - ';
+ $unit = '';
+ }
+ if (isset($sts_data['Rows'])) {
+ $sum_entries += $sts_data['Rows'];
+ }
+ }
+ // MyISAM MERGE Table
+ else if ($mergetable == TRUE) {
+ $formated_size = ' - ';
+ $unit = '';
+ }
+ else {
+ $formated_size = 'unknown';
+ $unit = '';
+ }
+ ?>
+
+ ' . number_format($sts_data['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . '' . "\n";
+ } else {
+ echo number_format($sts_data['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . "\n";
+ }
+ ?>
+ |
+
+
+ |
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+ |
+
+ --
+
+ |
+
+ |
+
+
+ = 3.23
+
+// 3. Shows tables list mysql < 3.23
+else {
+ $i = 0;
+ echo "\n";
+ ?>
+
+
+
+
+ |
|
-
+
|
-
+
|
= 32303) {
+ $local_query = 'SHOW TABLE STATUS LIKE \'' . sql_addslashes($table, TRUE) . '\'';
+ $result = mysql_query($local_query) or mysql_die('', $local_query);
+ $showtable = mysql_fetch_array($result);
+ $num_rows = (isset($showtable['Rows']) ? $showtable['Rows'] : 0);
+ $show_comment = (isset($showtable['Comment']) ? $showtable['Comment'] : '');
+} else {
+ $local_query = 'SELECT COUNT(*) AS count FROM ' . backquote($table);
+ $result = mysql_query($local_query) or mysql_die('', $local_query);
+ $showtable = array();
+ $num_rows = mysql_result($result, 0, 'count');
+ $show_comment = '';
+} // end display comments
+mysql_free_result($result);
+
+
+/**
+ * Gets table keys and retains them
+ */
+$local_query = 'SHOW KEYS FROM ' . backquote($table);
+$result = mysql_query($local_query) or mysql_die('', $local_query);
+$primary = '';
+$prev_key = '';
+$prev_seq = 0;
+$i = 0;
+$pk_array = array(); // will be use to emphasis prim. keys in the table view
+while ($row = mysql_fetch_array($result)) {
+ $ret_keys[] = $row;
+ // Unset the 'Seq_in_index' value if it's not a composite index - part 1
+ if ($i > 0 && $row['Key_name'] != $prev_key && $prev_seq == 1) {
+ unset($ret_keys[$i-1]['Seq_in_index']);
+ }
+ $prev_key = $row['Key_name'];
+ $prev_seq = $row['Seq_in_index'];
+ // Backups the list of primary keys
+ if ($row['Key_name'] == 'PRIMARY') {
+ $primary .= $row['Column_name'] . ', ';
+ $pk_array[$row['Column_name']] = 1;
+ }
+ $i++;
+} // end while
+// Unset the 'Seq_in_index' value if it's not a composite index - part 2
+if ($i > 0 && $row['Key_name'] != $prev_key && $prev_seq == 1) {
+ unset($ret_keys[$i-1]['Seq_in_index']);
+}
+mysql_free_result($result);
+
+
+/**
+ * Gets fields properties
+ */
+$local_query = 'SHOW FIELDS FROM ' . backquote($table);
+$result = mysql_query($local_query) or mysql_die('', $local_query);
+$fields_cnt = mysql_num_rows($result);
+
+
+
/**
* Displays the comments of the table is MySQL >= 3.23
*/
-if (MYSQL_INT_VERSION >= 32300) {
- $local_query = 'SHOW TABLE STATUS LIKE \'' . sql_addslashes($table, TRUE) . '\'';
- $result = mysql_query($local_query) or mysql_die('', $local_query);
- $row = mysql_fetch_array($result);
- if (!empty($row['Comment'])) {
- echo $strTableComments . ' : ' . $row['Comment'];
- }
- mysql_free_result($result);
-} // end display comments
+if (!empty($show_comment)) {
+ echo $strTableComments . ' : ' . $row['Comment'];
+}
/**
* Displays the table structure
*/
-// Gets fields properties
-$local_query = 'SHOW FIELDS FROM ' . backquote($table);
-$result = mysql_query($local_query) or mysql_die('', $local_query);
?>
@@ -97,10 +144,14 @@ while ($row = mysql_fetch_array($result)) {
} else {
$row['Default'] = htmlspecialchars($row['Default']);
}
+ $field_name = htmlspecialchars($row['Field']);
+ if (isset($pk_array[$row['Field']])) {
+ $field_name = '' . $field_name . '';
+ }
echo "\n";
?>
- |
+ |
> |
|
|
@@ -120,29 +171,75 @@ echo "\n";
/**
* Displays indexes
*/
-$local_query = 'SHOW KEYS FROM ' . backquote($table);
-$result = mysql_query($local_query) or mysql_die('', $local_query);
-if (mysql_num_rows($result) > 0) {
+$index_count = (isset($ret_keys))
+ ? count($ret_keys)
+ : 0;
+if ($index_count > 0) {
?>
+
-
-
+
|
|
- |
-
= 32323) {
+ echo "\n";
+ ?>
+ |
+
+ |
+
+ -' . $row['Seq_in_index'] . '-';
+ } else {
+ $key_name = htmlspecialchars($row['Key_name']);
+ }
+ if (!isset($row['Sub_part'])) {
+ $row['Sub_part'] = '';
+ }
+
+ if ($row['Key_name'] != $prev_key) {
+ $j++;
+ $prev_key = $row['Key_name'];
+ }
+ $bgcolor = ($j % 2) ? $cfgBgcolorOne : $cfgBgcolorTwo;
+ echo "\n";
+ ?>
+
+ |
+ |
+ = 32323) {
+ echo "\n";
+ ?>
+ |
+
+ |
+ |
+
+ |
+
-
- |
- |
- |
0) {
?>
= 32303 && $nonisam == FALSE) {
+ // Gets some sizes
+ $mergetable = FALSE;
+ if (isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM') {
+ $mergetable = TRUE;
+ }
+ list($data_size, $data_unit) = format_byte_down($showtable['Data_length']);
+ if ($mergetable == FALSE) {
+ list($index_size, $index_unit) = format_byte_down($showtable['Index_length']);
+ }
+ if (isset($showtable['Data_free']) && $showtable['Data_free'] > 0) {
+ list($free_size, $free_unit) = format_byte_down($showtable['Data_free']);
+ list($effect_size, $effect_unit) = format_byte_down($showtable['Data_length'] + $showtable['Index_length'] - $showtable['Data_free']);
+ } else {
+ list($effect_size, $effect_unit) = format_byte_down($showtable['Data_length'] + $showtable['Index_length']);
+ }
+ list($tot_size, $tot_unit) = format_byte_down($showtable['Data_length'] + $showtable['Index_length']);
+ if ($num_rows > 0) {
+ list($avg_size, $avg_unit) = format_byte_down(($showtable['Data_length'] + $showtable['Index_length']) / $showtable['Rows'], 6, 1);
+ }
+
+ // Displays them
+ ?>
+
+
+
+
+
+
+
+
+
+
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+ |
+ |
+
+
+
+ |
+ |
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+
+ |
+
+
+ |
+
+ 0) {
+ echo "\n";
+ ?>
+
+ ø |
+
+
+ |
+
+ 0 && $mergetable == FALSE) {
+ echo "\n";
+ ?>
+
+ ø |
+
+
+ |
+
+
+
+ Autoindex |
+
+
+ |
+
+
+
+ |
+
+
+
+ = 32303 && $nonisam == FALSE)
/**