Files
phpmyadmin/db_details.php3
2001-07-21 14:20:12 +00:00

473 lines
16 KiB
PHP
Executable File

<?php
/* $Id$ */
/**
* Gets the variables sent to this script and diplays headers
*/
require('./grab_globals.inc.php3');
if (!isset($message)) {
include('./header.inc.php3');
} else {
show_message($message);
}
/**
* Displays an html table with all the tables contained into the current
* database
*/
// 1. Gets the list of the tables
$tables = mysql_list_tables($db);
$num_tables = @mysql_numrows($tables);
// speedup view on locked tables - staybyte - 11 June 2001
if ($num_tables > 0 && MYSQL_MAJOR_VERSION >= 3.23 && intval(MYSQL_MINOR_VERSION) >= 3) {
// Special speedup for newer MySQL Versions (in 4.0 format changed)
if ($cfgSkipLockedTables == true && MYSQL_MAJOR_VERSION == 3.23 && intval(MYSQL_MINOR_VERSION) >= 30) {
$query = 'SHOW OPEN TABLES FROM ' . db_name($db);
$result = mysql_query($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 (preg_match('/in_use=[1-9]+/', $tmp['Comment'])) {
$sot_cache[$tmp[0]] = true;
}
}
mysql_free_result($result);
if (isset($sot_cache)) {
$query = 'SHOW TABLES FROM ' . db_name($db);
$result = mysql_query($query);
if ($result != false && mysql_num_rows($result) > 0) {
while ($tmp = mysql_fetch_array($result)) {
if (!isset($sot_cache[$tmp[0]])) {
$sts_result = mysql_query('SHOW TABLE STATUS FROM ' . db_name($db) . ' LIKE \'' . addslashes($tmp[0]) . '\'');
$sts_tmp = mysql_fetch_array($sts_result);
$tbl_cache[] = $sts_tmp;
} else { // table in use
$tbl_cache[] = array('Name' => $tmp[0]);
}
}
mysql_free_result($result);
$sot_ready = true;
}
}
}
}
if (!isset($sot_ready)) {
$result = mysql_query('SHOW TABLE STATUS FROM ' . db_name($db));
if ($result != false && mysql_num_rows($result) > 0) {
while ($sts_tmp = mysql_fetch_array($result)) {
$tbl_cache[] = $sts_tmp;
}
mysql_free_result($result);
}
}
}
// 2. Displays tables
if ($num_tables == 0) {
echo $strNoTablesFound . "\n";
}
// show table size on mysql >= 3.23 - staybyte - 11 June 2001
else if (MYSQL_MAJOR_VERSION >= 3.23 && isset($tbl_cache)) {
?>
<!-- TABLE LIST -->
<table border="<?php echo $cfgBorder; ?>">
<tr>
<th><?php echo ucfirst($strTable); ?></th>
<th colspan="6"><?php echo ucfirst($strAction); ?></th>
<th><?php echo ucfirst($strRecords); ?></th>
<th><?php echo ucfirst($strSize); ?></th>
</tr>
<?php
$i = $sum_entries = $sum_size = 0;
while (list($keyname, $sts_data) = each($tbl_cache)) {
$table = $sts_data['Name'];
$query = "?server=$server&lang=$lang&db=$db&table=$table&goto=db_details.php3";
$bgcolor = ($i++ % 2) ? $cfgBgcolorOne : $cfgBgcolorTwo;
echo "\n";
?>
<tr bgcolor="<?php echo $bgcolor; ?>">
<td class="data">
<b><?php echo $table; ?>&nbsp;</b>
</td>
<td>
<a href="sql.php3<?php echo $query; ?>&sql_query=<?php echo urlencode("SELECT * FROM $table"); ?>&pos=0"><?php echo $strBrowse; ?></a>
</td>
<td>
<a href="tbl_select.php3<?php echo $query; ?>"><?php echo $strSelect; ?></a>
</td>
<td>
<a href="tbl_change.php3<?php echo $query; ?>"><?php echo $strInsert; ?></a>
</td>
<td>
<a href="tbl_properties.php3<?php echo $query; ?>"><?php echo $strProperties; ?></a>
</td>
<td>
<a href="sql.php3<?php echo $query; ?>&reload=true&sql_query=<?php echo urlencode("DROP TABLE $table"); ?>&zero_rows=<?php echo urlencode($strTable . ' ' . $table . ' ' . $strHasBeenDropped); ?>"><?php echo $strDrop; ?></a>
</td>
<td>
<a href="sql.php3<?php echo $query; ?>&sql_query=<?php echo urlencode("DELETE FROM $table"); ?>&zero_rows=<?php echo urlencode($strTable . ' ' . $table . ' ' . $strHasBeenEmptied); ?>"><?php echo $strEmpty; ?></a>
</td>
<?php
echo "\n";
if (isset($sts_data['Type']) && $sts_data['Type']=="MRG_MyISAM") $mergetable=true;
if (isset($sts_data['Rows']))
{
if (!isset($mergetable)){
$tblsize = $sts_data['Data_length'] + $sts_data['Index_length'];
$sum_size += $tblsize;
$sum_entries += $sts_data['Rows'];
if ($tblsize > 0) {
list($formated_size, $unit) = format_byte_down($tblsize, 3, 1);
} else {
list($formated_size, $unit) = format_byte_down($tblsize, 3, 0);
}
}
else if (isset($mergetable)) // MyISAM MERGE Table
{
$formated_size="&nbsp;-&nbsp;";
$unit="";
}
else
{
$formated_size="unknown";
$unit="";
}
?>
<td align="right">
<?php
if (isset($mergetable)) echo "<i>";
echo number_format($sts_data['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . "\n";
if (isset($mergetable)) echo "</i>";
?>
</td>
<td align="right" nowrap="nowrap">
&nbsp;&nbsp;
<a href="tbl_properties.php3<?php echo $query; ?>>#showusage"><?php echo $formated_size . ' ' . $unit; ?></a>
</td>
<?php
} else {
?>
<td colspan="3" align="center">
<?php echo $strInUse . "\n"; ?>
</td>
<?php
}
echo "\n";
?>
</tr>
<?php
}
// Show Summary
list ($sum_formated,$unit)=format_byte_down($sum_size,3,1);
echo "\n";
?>
<tr bgcolor="<?php echo $cfgThBgcolor; ?>">
<td colspan="7" align="center">
<?php echo $strSum . "\n"; ?>
</td>
<td align="right">
<?php echo number_format($sum_entries, 0, $number_decimal_separator, $number_thousands_separator) . "\n"; ?>
</td>
<td align="right">
<?php echo $sum_formated . ' '. $unit . "\n"; ?>
</td>
</tr>
</table>
<?php
} // end case mysql >= 3.23
else {
$i = 0;
echo "\n";
?>
<!-- TABLE LIST -->
<table border="<?php echo $cfgBorder; ?>">
<tr>
<th><?php echo ucfirst($strTable); ?></th>
<th colspan="6"><?php echo ucfirst($strAction); ?></th>
<th><?php echo ucfirst($strRecords); ?></th>
</tr>
<?php
while ($i < $num_tables) {
$table = mysql_tablename($tables, $i);
$query = "?server=$server&lang=$lang&db=$db&table=$table&goto=db_details.php3";
$bgcolor = ($i % 2) ? $cfgBgcolorOne : $cfgBgcolorTwo;
echo "\n";
?>
<tr bgcolor="<?php echo $bgcolor; ?>">
<td class="data">
<b><?php echo $table; ?></b>
</td>
<td>
<a href="sql.php3<?php echo $query; ?>&sql_query=<?php echo urlencode("SELECT * FROM $table"); ?>&pos=0"><?php echo $strBrowse; ?></a>
</td>
<td>
<a href="tbl_select.php3<?php echo $query; ?>"><?php echo $strSelect; ?></a>
</td>
<td>
<a href="tbl_change.php3<?php echo $query; ?>"><?php echo $strInsert; ?></a>
</td>
<td>
<a href="tbl_properties.php3<?php echo $query; ?>"><?php echo $strProperties; ?></a>
</td>
<td>
<a href="sql.php3<?php echo $query; ?>&reload=true&sql_query=<?php echo urlencode("DROP TABLE $table"); ?>&zero_rows=<?php echo urlencode($strTable . ' ' . $table . ' ' . $strHasBeenDropped); ?>"><?php echo $strDrop; ?></a>
</td>
<td>
<a href="sql.php3<?php echo $query; ?>&sql_query=<?php echo urlencode("DELETE FROM $table"); ?>&zero_rows=<?php echo urlencode($strTable . ' ' . $table . ' ' . $strHasBeenEmptied); ?>"><?php echo $strEmpty; ?></a>
</td>
<td align="right">
<?php count_records($db, $table); echo "\n"; ?>
</td>
</tr>
<?php
$i++;
}
echo "\n";
?>
</table>
<?php
} // end case mysql < 3.23
$query = "?server=$server&lang=$lang&db=$db&goto=db_details.php3";
echo "\n";
?>
<hr />
<?php
/**
* Database work
*/
?>
<!-- DATABASE WORK -->
<script src="functions.js" type="text/javascript" language="javascript"></script>
<ul>
<?php
if ($num_tables > 0) {
?>
<!-- Printable view of a table -->
<li>
<div style="margin-bottom: 10px"><a href="db_printview.php3<?php echo $query; ?>"><?php echo $strPrintView; ?></a></div>
</li>
<?php
}
?>
<!-- Query box, sql file loader and bookmark support -->
<li>
<form method="post" action="db_readdump.php3" enctype="multipart/form-data">
<input type="hidden" name="server" value="<?php echo $server; ?>" />
<input type="hidden" name="lang" value="<?php echo $lang; ?>" />
<input type="hidden" name="pos" value="0" />
<input type="hidden" name="db" value="<?php echo $db; ?>" />
<input type="hidden" name="goto" value="db_details.php3" />
<input type="hidden" name="zero_rows" value="<?php echo $strSuccess; ?>" />
<?php echo $strRunSQLQuery . $db . ' ' . show_docu('manual_Reference.html#SELECT'); ?>&nbsp;:<br />
<div style="margin-bottom: 5px">
<textarea name="sql_query" wrap="virtual"
rows="<?php echo $cfgTextareaRows; ?>"
cols="<?php echo $cfgTextareaCols; ?>"
>
<?php
if (isset($show_query)) {
if (get_magic_quotes_gpc()) {
$sql_query = stripslashes($sql_query);
}
echo $show_query=="y" ? $sql_query : '';
}
// else if (isset($sql_query)) {
// echo stripslashes($sql_query);
//}
?>
</textarea><br />
<INPUT type=checkbox name='show_query' value="y" checked /><?php echo $strShowThisQuery; ?><br />
</div>
<?php echo "<i>$strOr</i> $strLocationTextfile"; ?>&nbsp;:<br />
<div style="margin-bottom: 5px">
<input type="file" name="sql_file" /><br />
</div>
<?php
// Bookmark Support
if ($cfgBookmark['db'] && $cfgBookmark['table']) {
if (($bookmark_list = list_bookmarks($db, $cfgBookmark)) && count($bookmark_list) > 0) {
echo " <i>$strOr</i> $strBookmarkQuery&nbsp;:<br />\n";
echo ' <div style="margin-bottom: 5px">' . "\n";
echo ' <select name="id_bookmark">' . "\n";
echo ' <option value=""></option>' . "\n";
while (list($key, $value) = each($bookmark_list)) {
echo ' <option value="' . htmlentities($value) . '">' . htmlentities($key) . '</option>' . "\n";
}
echo ' </select>' . "\n";
echo ' <input type="radio" name="action_bookmark" value="0" checked="checked" style="vertical-align: middle" />' . $strSubmit . "\n";
echo ' &nbsp;<input type="radio" name="action_bookmark" value="1" style="vertical-align: middle" />' . $strBookmarkView . "\n";
echo ' &nbsp;<input type="radio" name="action_bookmark" value="2" style="vertical-align: middle" />' . $strDelete . "\n";
echo ' <br />' . "\n";
echo ' </div>' . "\n";
}
}
?>
<input type="submit" name="SQL" value="<?php echo $strGo; ?>" />
</form>
</li>
<?php
/**
* Query by example and dump of the db
* Only displayed if there is at least one table in the db
*/
if ($num_tables > 0) {
?>
<!-- Query by an example -->
<li>
<div style="margin-bottom: 10px"><a href="tbl_qbe.php3<?php echo $query;?>"><?php echo $strQBE; ?></a></div>
</li>
<!-- Dump of a database -->
<li>
<form method="post" action="tbl_dump.php3" name="db_dump">
<?php echo $strViewDumpDB; ?><br />
<table>
<?php
$tables = mysql_list_tables($db);
$num_tables = @mysql_numrows($tables);
if ($num_tables > 1) {
echo "\n";
?>
<tr>
<td colspan="2">
<select name="table_select[]" size="5" multiple="multiple">
<?php
$i = 0;
echo "\n";
while ($i < $num_tables) {
$table = mysql_tablename($tables, $i);
echo ' <option value="' . $table . '">' . $table . '</option>' . "\n";
$i++;
}
?>
</select>
</td>
</tr>
<?php
}
echo "\n";
?>
<tr>
<td>
<input type="radio" name="what" value="structure" checked="checked" />
<?php echo $strStrucOnly; ?>&nbsp;&nbsp;
</td>
<td>
<input type="checkbox" name="drop" value="1" />
<?php echo $strStrucDrop . "\n"; ?>
</td>
</tr>
<tr>
<td>
<input type="radio" name="what" value="data" />
<?php echo $strStrucData; ?>&nbsp;&nbsp;
</td>
<td>
<input type="checkbox" name="showcolumns" value="yes" />
<?php echo $strCompleteInserts . "\n"; ?>
</td>
</tr>
<tr>
<td>
<input type="radio" name="what" value="dataonly" />
<?php echo $strDataOnly; ?>&nbsp;&nbsp;
</td>
<td>
<input type="checkbox" name="asfile" value="sendit" onclick="return checkTransmitDump(this.form, 'transmit')" />
<?php echo $strSend . "\n"; ?>
<?php
// gzip and bzip2 encode features
if (PMA_INT_VERSION >= 40004) {
$is_gzip = @function_exists('gzencode');
$is_bzip = @function_exists('bzcompress');
if ($is_gzip || $is_bzip) {
echo "\n" . ' (';
if ($is_gzip) {
?>
<input type="checkbox" name="gzip" value="gzip" onclick="return checkTransmitDump(this.form, 'gzip')" /><?php echo $strGzip . (($is_bzip) ? '&nbsp;' : '') . "\n"; ?>
<?php
}
if ($is_bzip) {
echo "\n"
?>
<input type="checkbox" name="bzip" value="bzip" onclick="return checkTransmitDump(this.form, 'bzip')" /><?php echo $strBzip . "\n"; ?>
<?php
}
echo "\n" . ' )';
}
}
echo "\n";
?>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="<?php echo $strGo; ?>" />
</td>
</tr>
</table>
<input type="hidden" name="server" value="<?php echo $server; ?>" />
<input type="hidden" name="lang" value="<?php echo $lang;?>" />
<input type="hidden" name="db" value="<?php echo $db;?>" />
</form>
</li>
<?php
} // end of create dump if there is at least one table in the db
?>
<!-- Create a new table -->
<li>
<form method="post" action="tbl_create.php3">
<input type="hidden" name="server" value="<?php echo $server; ?>" />
<input type="hidden" name="lang" value="<?php echo $lang; ?>" />
<input type="hidden" name="db" value="<?php echo $db; ?>" />
<?php
echo ' ' . $strCreateNewTable . $db . '&nbsp;:<br />' . "\n";
echo ' ' . $strName . '&nbsp;:&nbsp;' . "\n";
echo ' ' . '<input type="text" name="table" />' . "\n";
// echo ' ' . $strNumberIndexes. '&nbsp;:&nbsp;' . "\n";
// echo ' ' . '<input type="text" name="num_indexes" size="2" />' . "\n";
echo ' ' . '<br />' . "\n";
echo ' ' . $strFields . '&nbsp;:&nbsp;' . "\n";
echo ' ' . '<input type="text" name="num_fields" size="2" />' . "\n";
echo ' ' . '&nbsp;<input type="submit" value="' . $strGo . '" />' . "\n";
?>
</form>
</li>
<!-- Drop table -->
<li>
<a href="sql.php3?server=<?php echo $server; ?>&lang=<?php echo $lang; ?>&db=<?php echo $db; ?>&sql_query=<?php echo urlencode('DROP DATABASE ' . db_name($db)); ?>&zero_rows=<?php echo urlencode($strDatabase . ' ' . db_name($db) . ' ' . $strHasBeenDropped); ?>&goto=main.php3&reload=true"><?php echo $strDropDB . ' ' . $db;?></a>
<?php echo show_docu('manual_Reference.html#DROP_DATABASE') . "\n"; ?>
</li>
</ul>
<?php
/**
* Displays the footer
*/
require('./footer.inc.php3');
echo "\n";
?>