1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-13 18:14:07 +02:00

Prepare for foreign keys edit

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@139 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana
2007-07-11 16:02:57 +00:00
parent 1a1e6ef79d
commit 736c73358d
4 changed files with 25 additions and 9 deletions

8
foreign.inc.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
page_header(lang('Foreign key') . ": " . htmlspecialchars($_GET["foreign"]));
if (strlen($_GET["name"])) {
$foreign_keys = foreign_keys($_GET["foreign"]);
$foreign_key = $foreign_keys[$_GET["name"]];
}

View File

@@ -76,13 +76,13 @@ function foreign_keys($table) {
if ($result) { if ($result) {
$create_table = $mysql->result($result, 1); $create_table = $mysql->result($result, 1);
$result->free(); $result->free();
preg_match_all("~FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)~", $create_table, $matches, PREG_SET_ORDER); preg_match_all("~CONSTRAINT `($pattern)` FOREIGN KEY \\(((?:`$pattern`,? ?)+)\\) REFERENCES `($pattern)`(?:\\.`($pattern)`)? \\(((?:`$pattern`,? ?)+)\\)~", $create_table, $matches, PREG_SET_ORDER);
foreach ($matches as $match) { foreach ($matches as $match) {
$db = idf_unescape(strlen($match[3]) ? $match[2] : $match[3]); $db = idf_unescape(strlen($match[4]) ? $match[3] : $match[4]);
$table = idf_unescape(strlen($match[3]) ? $match[3] : $match[2]); $table = idf_unescape(strlen($match[4]) ? $match[4] : $match[3]);
preg_match_all("~`($pattern)`~", $match[1], $source); preg_match_all("~`($pattern)`~", $match[2], $source);
preg_match_all("~`($pattern)`~", $match[4], $target); preg_match_all("~`($pattern)`~", $match[5], $target);
$return[] = array($db, $table, array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1])); $return[$match[1]] = array($db, $table, array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1]));
} }
} }
return $return; return $return;

View File

@@ -47,6 +47,8 @@ if (isset($_GET["dump"])) {
include "./database.inc.php"; include "./database.inc.php";
} elseif (isset($_GET["call"])) { } elseif (isset($_GET["call"])) {
include "./call.inc.php"; include "./call.inc.php";
} elseif (isset($_GET["foreign"])) {
include "./foreign.inc.php";
} else { } else {
$TOKENS = array(); $TOKENS = array();
page_header(htmlspecialchars(lang('Database') . ": " . $_GET["db"])); page_header(htmlspecialchars(lang('Database') . ": " . $_GET["db"]));

View File

@@ -33,15 +33,21 @@ if (!$result) {
} }
echo '<p><a href="' . htmlspecialchars($SELF) . 'indexes=' . urlencode($_GET["table"]) . '">' . lang('Alter indexes') . "</a></p>\n"; echo '<p><a href="' . htmlspecialchars($SELF) . 'indexes=' . urlencode($_GET["table"]) . '">' . lang('Alter indexes') . "</a></p>\n";
echo "<h3>" . lang('Foreign keys') . "</h3>\n";
$foreign_keys = foreign_keys($_GET["table"]); $foreign_keys = foreign_keys($_GET["table"]);
if ($foreign_keys) { if ($foreign_keys) {
echo "<h3>" . lang('Foreign keys') . "</h3>\n";
echo "<table border='1' cellspacing='0' cellpadding='2'>\n"; echo "<table border='1' cellspacing='0' cellpadding='2'>\n";
foreach ($foreign_keys as $foreign_key) { foreach ($foreign_keys as $name => $foreign_key) {
echo "<tr><td><i>" . implode("</i>, <i>", $foreign_key[2]) . "</i></td><td>" . (strlen($foreign_key[0]) && $foreign_key[0] !== $_GET["db"] ? "<strong>" . htmlspecialchars($foreign_key[0]) . "</strong>." : "") . htmlspecialchars($foreign_key[1]) . "(<em>" . implode("</em>, <em>", $foreign_key[3]) . "</em>)</td></tr>\n"; echo "<tr>";
echo "<td><i>" . implode("</i>, <i>", $foreign_key[2]) . "</i></td>";
$link = (strlen($foreign_key[0]) && $foreign_key[0] !== $_GET["db"] ? "<strong>" . htmlspecialchars($foreign_key[0]) . "</strong>." : "") . htmlspecialchars($foreign_key[1]);
echo '<td><a href="' . htmlspecialchars(strlen($foreign_key[0]) ? preg_replace('~db=[^&]*~', "db=" . urlencode($foreign_key[0]), $SELF) : $SELF) . "table=" . urlencode($foreign_key[1]) . "\">$link</a>(<em>" . implode("</em>, <em>", $foreign_key[3]) . "</em>)</td>";
echo '<td><a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '&amp;name=' . urlencode($name) . '">' . lang('Alter') . "</a></td>";
echo "</tr>\n";
} }
echo "</table>\n"; echo "</table>\n";
} }
echo '<p><a href="' . htmlspecialchars($SELF) . 'foreign=' . urlencode($_GET["table"]) . '">' . lang('Add foreign key') . "</a></p>\n";
} }
if ($mysql->server_info >= 5) { if ($mysql->server_info >= 5) {