Viewing file: dboverview.php (9.98 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /*
SQL Buddy - Web based MySQL administration http://www.sqlbuddy.com/
dboverview.php - database main page - list tables and create new table
MIT license
2008 Calvin Lough <http://calv.in>
*/
include "functions.php";
loginCheck();
if (isset($db)) {
$conn->selectDB($db);
//run delete queries
if (isset($_POST['runQuery'])) { $runQuery = $_POST['runQuery']; $queryList = splitQueryText($runQuery); foreach ($queryList as $query) { $query = trim($query); if ($query != "") { $conn->query($query) or ($dbError = $conn->error()); // make a list of the tables that were dropped/emptied if (substr($query, 0, 10) == "DROP TABLE") $droppedList[] = substr($query, 12, -1); if (substr($query, 0, 10) == "TRUNCATE `") $emptiedList[] = substr($query, 10, -1); if (substr($query, 0, 13) == "DELETE FROM '") $emptiedList[] = substr($query, 13, -1); } } }
// if tables were dropped, remove them from the side menu if (isset($droppedList) && isset($db)) { ?> <script type="text/javascript" authkey="<?php echo $requestKey; ?>"> var targ = $(getSubMenuId('<?php echo $db . "','" . $droppedList[0]; ?>')); while (!targ.hasClass("sublist")) { targ = targ.parentNode; } var toRecalculate = targ.id; <?php for ($mn=0; $mn<count($droppedList); $mn++) { ?> $(getSubMenuId('<?php echo $db . "','" . $droppedList[$mn]; ?>')).dispose(); <?php } ?> recalculateSubmenuHeight(toRecalculate); </script> <?php }
// if tables were emptied, reset their counts in js if (isset($emptiedList) && isset($db)) { ?> <script type="text/javascript" authkey="<?php echo $requestKey; ?>"> <?php for ($mn=0; $mn<count($emptiedList); $mn++) { echo "sb.tableRowCounts[\"" . $db . "_" . $emptiedList[$mn] . "\"] = \"0\";\n"; echo "var sideA = $(getSubMenuId('" . $db . "', '" . $emptiedList[$mn] . "'));\n"; echo 'var subc = $E(".subcount", sideA);'; echo "\nsubc.set(\"text\", \"(0)\");\n"; } ?> </script> <?php }
if (isset($dbError)) { echo '<div class="errormessage" style="margin: 6px 12px 10px 7px; width: 550px"><strong>'; echo __("Error performing operation"); echo '</strong><p>' . $dbError . '</p></div>'; }
?>
<table cellpadding="0" class="dboverview" width="750" style="margin: 5px 7px 0"> <tr> <td>
<?php
$tableSql = $conn->listTables();
if ($conn->isResultSet($tableSql)) { echo '<div style="margin-bottom: 15px">'; echo '<table class="browsenav">'; echo '<tr>'; echo '<td class="options">'; echo __("Select") . ': <a onclick="checkAll()">' . __("All") . '</a> <a onclick="checkNone()">' . __("None") . '</a>'; echo ' ' . __("With selected") . ': <a onclick="emptySelectedTables()">' . __("Empty") . '</a> <a onclick="dropSelectedTables()">' . __("Drop") . '</a>'; if ($conn->getAdapter() == "mysql") { echo ' <a onclick="optimizeSelectedTables()">' . __("Optimize") . '</a>'; } echo '</td>'; echo '</tr>'; echo '</table>'; echo '<div class="grid">'; echo '<div class="emptyvoid"> </div>'; echo '<div class="gridheader impotent">'; echo '<div class="gridheaderinner">'; echo '<table cellpadding="0" cellspacing="0">'; echo '<tr>'; echo '<td><div column="1" class="headertitle column1">' . __("Table") . '</div></td>'; echo '<td><div class="columnresizer"></div></td>'; echo '<td><div column="2" class="headertitle column2">' . __("Rows") . '</div></td>'; echo '<td><div class="columnresizer"></div></td>'; if (isset($charsetList) && isset($collationList)) { echo '<td><div column="3" class="headertitle column3">' . __("Charset") . '</div></td>'; echo '<td><div class="columnresizer"></div></td>'; echo '<td><div column="4" class="headertitle column4">' . __("Overhead") . '</div></td>'; echo '<td><div class="columnresizer"></div></td>'; } else if ($conn->getAdapter() == "mysql") { echo '<td><div column="3" class="headertitle column3">' . __("Overhead") . '</div></td>'; echo '<td><div class="columnresizer"></div></td>'; } echo '<td><div class="emptyvoid" style="border-right: 0"> </div></td>'; echo '</tr>'; echo '</table>'; echo '</div>'; echo '</div>'; echo '<div class="leftchecks" style="max-height: 400px">'; $m = 0; while ($tableRow = $conn->fetchArray($tableSql)) { echo '<dl class="manip'; if ($m % 2 == 1) echo ' alternator'; else echo ' alternator2'; echo '"><dt><input type="checkbox" class="check' . $m . '" onclick="rowClicked(' . $m++ . ')" querybuilder="' . $tableRow[0] . '" /></dt></dl>'; } echo '</div>'; $tableSql = $conn->listTables(); echo '<div class="gridscroll withchecks" style="overflow-x: hidden; max-height: 400px">'; $m = 0; while ($tableRow = $conn->fetchArray($tableSql)) { $rowCount = $conn->tableRowCount($tableRow[0]); if ($conn->getAdapter() == "mysql") { $infoSql = $conn->query("SHOW TABLE STATUS LIKE '" . $tableRow[0] . "'"); $infoRow = $conn->fetchAssoc($infoSql); $overhead = $infoRow["Data_free"]; $formattedOverhead = ""; if ($overhead > 0) $formattedOverhead = memoryFormat($overhead); } echo '<div class="row' . $m . ' browse'; if ($m % 2 == 1) { echo ' alternator'; } else { echo ' alternator2'; } echo '">'; echo '<table cellpadding="0" cellspacing="0">'; echo '<tr>'; echo '<td><div class="item column1"><div style="float: left; overflow: hidden; width: 185px">' . $tableRow[0] . '</div><img src="images/goto.png" class="goto" onclick="subTabLoad(\'' . $db . '\', \'' . $tableRow[0] . '\')" /></div></td>'; echo '<td><div class="item column2">' . number_format($rowCount) . '</div></td>'; if (isset($collationList) && array_key_exists("Collation", $infoRow)) { echo '<td><div class="item column3">' . $collationList[$infoRow['Collation']] . '</div></td>'; echo '<td><div class="item column4">' . $formattedOverhead . '</div></td>'; } else if ($conn->getAdapter() == "mysql") { echo '<td><div class="item column4">' . $formattedOverhead . '</div></td>'; } echo '</tr>'; echo '</table>'; echo '</div>'; $m++; } echo '</div>'; echo '</div>'; echo '<br />'; }
if ($conn->getAdapter() != "sqlite") {
?>
<div class="inputbox" style="width: 275px; margin-bottom: 15px"> <h4><?php echo __("Options"); ?></h4>
<a onclick="confirmDropDatabase()"><?php printf(__("Drop the '%s' database"), $db); ?></a> </div>
<?php
}
if (isset($charsetList)) {
$currentChar = ""; $currentCharSql = $conn->query("SHOW VARIABLES LIKE 'character_set_database'");
if ($conn->isResultSet($currentCharSql)) { $currentChar = $conn->result($currentCharSql, 0, "Value"); }
?>
<div class="inputbox" style="width: 325px; margin-bottom: 15px"> <h4><?php echo __("Edit database"); ?></h4>
<div id="editDatabaseMessage"></div> <form onsubmit="editDatabase(); return false"> <table cellpadding="4">
<?php
echo "<tr>"; echo "<td class=\"secondaryheader\">"; echo __("Charset") . ":"; echo "</td>"; echo "<td class=\"inputarea\">"; echo "<select id=\"DBRECHARSET\" style=\"width: 145px\">"; echo "<option></option>"; foreach ($charsetList as $charset) { echo "<option value=\"" . $charset . "\""; if (isset($currentChar) && $charset == $currentChar) echo " selected=\"selected\""; echo ">" . $charset . "</option>"; } echo "</select>"; echo "</td>"; echo '<td align="left" style="padding-left: 10px">'; echo '<input type="submit" class="inputbutton" value="' . __("Submit") . '" />'; echo '</td>'; echo "</tr>";
?>
</table> </form> </div>
<?php
}
?>
<div id="reporterror" class="errormessage" style="display: none; margin-bottom: 15px"></div>
<div class="inputbox"> <h4><?php echo __("Create a new table"); ?></h4> <form onsubmit="createTable(); return false"> <table cellpadding="0" style="width: 300px"> <tr> <td class="secondaryheader" style="width: 80px"> <?php echo __("Name") ?>: </td> <td> <input type="text" class="text" id="TABLENAME" style="width: 150px" /> </td> </tr> <?php if (isset($charsetList)) { echo "<tr>"; echo "<td class=\"secondaryheader\" style=\"width: 60px\">"; echo __("Charset") . ":"; echo "</td>"; echo "<td>"; echo "<select id=\"TABLECHARSET\" style=\"width: 155px\">"; echo "<option></option>"; foreach ($charsetList as $charset) { echo "<option value=\"" . $charset . "\""; if (isset($currentChar) && $charset == $currentChar) echo " selected=\"selected\""; echo ">" . $charset . "</option>"; } echo "</select>"; echo "</td>"; echo "</tr>"; } ?> <tr> <td style="padding-top: 5px; color: gray" colspan="2"> <?php echo __("Setup the fields for the table below"); ?>: </td> </tr> </table> <div id="fieldlist"> <div class="fieldbox"> <table cellpadding="0" class="overview"> <tr> <td colspan="4" class="fieldheader"> <span class="fieldheadertitle"><<?php echo __("New field"); ?>></span> <a class="fieldclose" onclick="removeField(this)"></a> </td> </tr> <?php if ($conn->getAdapter() == "mysql") { ?> <tr> <td class="secondaryheader"> <?php echo __("Name"); ?>: </td> <td> <input type="text" class="text" name="NAME" onkeyup="updateFieldName(this)" /> </td> <td class="secondaryheader" style="padding-left: 5px"> <?php echo __("Type"); ?>: </td> <td> <select name="TYPE" onchange="updateFieldName(this); toggleValuesLine(this)"> <?php foreach ($typeList as $type) { echo '<option value="' . $type . '">' . $type . '</option>'; } ?> </select> </td> </tr> <tr class="valueline" style="display: none"> <td class="secondaryheader"> <?php echo __("Values"); ?>: </td> <td class="inputarea"> <input type="text" class="text" name="VALUES" onkeyup="updateFieldName(this)" /> </td> <td colspan="2" style="color: gray"> <?php echo __("Enter in the format: ('1','2')"); ?> </td> </tr> <tr> <td class="secondaryheader"> <?php echo __("Size") ?>: </td> <td class="inputarea"> <input type="text" class="text" name="SIZE" onkeyup="updateFieldName(this)
|