--- /dev/null
+<?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"]];
+}
if ($result) {
$create_table = $mysql->result($result, 1);
$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) {
- $db = idf_unescape(strlen($match[3]) ? $match[2] : $match[3]);
- $table = idf_unescape(strlen($match[3]) ? $match[3] : $match[2]);
- preg_match_all("~`($pattern)`~", $match[1], $source);
- preg_match_all("~`($pattern)`~", $match[4], $target);
- $return[] = array($db, $table, array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1]));
+ $db = idf_unescape(strlen($match[4]) ? $match[3] : $match[4]);
+ $table = idf_unescape(strlen($match[4]) ? $match[4] : $match[3]);
+ preg_match_all("~`($pattern)`~", $match[2], $source);
+ preg_match_all("~`($pattern)`~", $match[5], $target);
+ $return[$match[1]] = array($db, $table, array_map('idf_unescape', $source[1]), array_map('idf_unescape', $target[1]));
}
}
return $return;
include "./database.inc.php";
} elseif (isset($_GET["call"])) {
include "./call.inc.php";
+ } elseif (isset($_GET["foreign"])) {
+ include "./foreign.inc.php";
} else {
$TOKENS = array();
page_header(htmlspecialchars(lang('Database') . ": " . $_GET["db"]));
}
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"]);
if ($foreign_keys) {
- echo "<h3>" . lang('Foreign keys') . "</h3>\n";
echo "<table border='1' cellspacing='0' cellpadding='2'>\n";
- foreach ($foreign_keys as $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";
+ foreach ($foreign_keys as $name => $foreign_key) {
+ 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"]) . '&name=' . urlencode($name) . '">' . lang('Alter') . "</a></td>";
+ echo "</tr>\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) {