]> git.joonet.de Git - adminer.git/commitdiff
Database list - bulk drop, number of tables
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Sun, 18 Oct 2009 09:29:01 +0000 (09:29 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Sun, 18 Oct 2009 09:29:01 +0000 (09:29 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1195 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/database.inc.php
adminer/db.inc.php
adminer/include/connect.inc.php
adminer/include/mysql.inc.php
todo.txt

index 6479ea56a3e47760eef0c306b388d13ce836f9e1..62bec8e6d907f024913e85bbc97d5d9ecbe2a28b 100644 (file)
@@ -1,9 +1,6 @@
 <?php
 if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP changes add.x to add_x
-       if ($_POST["drop"]) {
-               unset($_SESSION["databases"][$_GET["server"]]);
-               query_redirect("DROP DATABASE " . idf_escape(DB), substr(preg_replace('~db=[^&]*&~', '', ME), 0, -1), lang('Database has been dropped.'));
-       } elseif (DB !== $_POST["name"]) {
+       if (DB !== $_POST["name"]) {
                // create or rename database
                unset($_SESSION["databases"][$_GET["server"]]); // clear cache
                $dbs = explode("\n", str_replace("\r", "", $_POST["name"]));
@@ -42,7 +39,7 @@ page_header(strlen(DB) ? lang('Alter database') : lang('Create database'), $erro
 
 $collations = collations();
 $name = DB;
-$collate = array();
+$collate = null;
 if ($_POST) {
        $name = $_POST["name"];
        $collate = $_POST["collation"];
@@ -55,14 +52,8 @@ if ($_POST) {
                        break;
                }
        }
-} elseif (($result = $connection->query("SHOW CREATE DATABASE " . idf_escape(DB)))) {
-       $create = $connection->result($result, 1);
-       if (preg_match('~ COLLATE ([^ ]+)~', $create, $match)) {
-               $collate = $match[1];
-       } elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $create, $match)) {
-               // default collation
-               $collate = $collations[$match[1]][0];
-       }
+} else {
+       $collate = db_collation(DB, $collations);
 }
 ?>
 
@@ -76,9 +67,7 @@ if ($_POST) {
 <input type="hidden" name="token" value="<?php echo $token; ?>">
 <input type="submit" value="<?php echo lang('Save'); ?>">
 <?php
-if (strlen(DB)) {
-       echo "<input type='submit' name='drop' value='" . lang('Drop') . "'$confirm>\n";
-} elseif (!$_POST["add_x"]) {
+if (!$_POST["add_x"]) {
        echo "<input type='image' name='add' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>\n";
 }
 ?>
index d2fe5f59becaf068430f6707b12ff84c526c144f..c5f51dd8ab3a3d763edc04e3e967a70a831c8e43 100644 (file)
@@ -39,7 +39,7 @@ if ($tables_views && !$error) {
 
 page_header(lang('Database') . ": " . h(DB), $error, false);
 echo '<p><a href="' . h(ME) . 'database=">' . lang('Alter database') . "</a>\n";
-echo '<p><a href="' . h(ME) . 'schema=">' . lang('Database schema') . "</a>\n";
+echo '<a href="' . h(ME) . 'schema=">' . lang('Database schema') . "</a>\n";
 
 echo "<h3>" . lang('Tables and views') . "</h3>\n";
 $table_status = table_status();
index d772208b29b07cccc1caa60051a9363b016116f0..5ba1e1ac26446cac252ce861d98aca8e7f0fbf94 100644 (file)
@@ -1,20 +1,50 @@
 <?php
 function connect_error() {
-       global $connection, $VERSION;
+       global $connection, $VERSION, $token, $error;
        if (strlen(DB)) {
                page_header(lang('Database') . ": " . h(DB), lang('Invalid database.'), false);
        } else {
+               if ($_POST["db"] && !$error) {
+                       unset($_SESSION["databases"][$_GET["server"]]);
+                       foreach ($_POST["db"] as $db) {
+                               if (!queries("DROP DATABASE " . idf_escape($db))) {
+                                       break;
+                               }
+                       }
+                       queries_redirect(substr(ME, 0, -1), lang('Database has been dropped.'), !$connection->error);
+               }
+               
                page_header(lang('Select database'), "", null);
+               echo "<p>";
                foreach (array(
                        'database' => lang('Create new database'),
                        'privileges' => lang('Privileges'),
                        'processlist' => lang('Process list'),
                        'variables' => lang('Variables'),
                ) as $key => $val) {
-                       echo "<p><a href='" . h(ME) . "$key='>$val</a>\n";
+                       echo "<a href='" . h(ME) . "$key='>$val</a>\n";
                }
                echo "<p>" . lang('MySQL version: %s through PHP extension %s', "<b" . ($connection->server_info < 4.1 ? " class='binary'" : "") . ">$connection->server_info</b>", "<b>$connection->extension</b>") . "\n";
                echo "<p>" . lang('Logged as: %s', "<b>" . h($connection->result($connection->query("SELECT USER()"))) . "</b>") . "\n";
+               $databases = get_databases();
+               if ($databases) {
+                       $collations = collations();
+                       echo "<form action='' method='post'>\n";
+                       echo "<table cellspacing='0' onclick='table_click(event);'>\n";
+                       echo "<thead><tr><td><input type='hidden' name='token' value='$token'>&nbsp;<th>" . lang('Database') . "<td>" . lang('Collation') . "<td>" . lang('Tables') . "</thead>\n";
+                       foreach ($databases as $db) {
+                               $root = h(ME) . "db=" . urlencode($db);
+                               echo "<tr><td>" . checkbox("db[]", $db, false);
+                               echo "<th><a href='$root'>" . h($db) . "</a>";
+                               echo "<td><a href='$root&amp;database='>" . nbsp(db_collation($db, $collations)) . "</a>";
+                               $result = $connection->query("SHOW TABLES FROM " . idf_escape($db));
+                               echo "<td><a href='$root&amp;schema='>$result->num_rows</a>";
+                               echo "\n";
+                       }
+                       echo "</table>\n";
+                       echo "<p><input type='submit' name='drop' value='" . lang('Drop') . "' onclick=\"return confirm('" . lang('Are you sure?') . " (' + form_checked(this, /db/) + ')');\">\n";
+                       echo "</form>\n";
+               }
        }
        page_footer("db");
 }
index 8ddafdeda8349b67a54c3c874ef4637a2b70fdf9..29f3ae3a9cc6f37f4a7436b2bc1da34b746edb41 100644 (file)
@@ -177,6 +177,30 @@ function get_databases($flush = true) {
        return $return;
 }
 
+/** Get database collation
+* @param string
+* @param array result of collations()
+* @return 
+*/
+function db_collation($db, $collations) {
+       global $connection;
+       $return = null;
+       $result = $connection->query("SHOW CREATE DATABASE " . idf_escape($db));
+       if ($result) {
+               $create = $connection->result($result, 1);
+               if (preg_match('~ COLLATE ([^ ]+)~', $create, $match)) {
+                       $return = $match[1];
+               } elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $create, $match)) {
+                       // default collation
+                       $return = $collations[$match[1]][0];
+               }
+       }
+       return $return;
+}
+
+/**Get supported engines 
+* @return array
+*/
 function engines() {
        global $connection;
        $return = array();
index 8122a45369a318ee9b472144c954ead225128cec..5f4f27b1d20bb95362416a49ee84cf00c006df64 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -1,4 +1,3 @@
-Bulk database drop
 Add whisperer to fields with foreign key
 Highlight found fields
 MySQL 5 BIT data type