diff --git a/adminer/include/version.inc.php b/adminer/include/version.inc.php index ab0e8360..7dacd883 100644 --- a/adminer/include/version.inc.php +++ b/adminer/include/version.inc.php @@ -1,2 +1,2 @@ $desc) { $options = $this->_foreignKeyOptions($_GET["select"], $name); - if ($options) { + if (is_array($options)) { if ($fields[$name]["null"]) { $options[0] = '(' . lang('empty') . ')'; } @@ -423,9 +423,12 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5 . enum_input("radio", $attrs, $field, ($value || isset($_GET["select"]) ? $value : 0), ($field["null"] ? "" : null)) ; } - $options = $this->_foreignKeyOptions($table, $field["field"]); - if ($options) { - return ""; + $options = $this->_foreignKeyOptions($table, $field["field"], $value); + if (isset($options)) { + return (is_array($options) + ? "" + : "
" + ); } if (like_bool($field)) { return '"; @@ -563,12 +566,16 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5 } } - function _foreignKeyOptions($table, $column) { + function _foreignKeyOptions($table, $column, $value = null) { + global $connection; if (list($table, $id, $name) = $this->_foreignColumn(column_foreign_keys($table), $column)) { $return = &$this->_values[$table]; if (!isset($return)) { $table_status = table_status($table); - $return = ($table_status["Rows"] > 1000 ? array() : array("" => "") + get_key_vals("SELECT $id, $name FROM " . table($table) . " ORDER BY 2")); + $return = ($table_status["Rows"] > 1000 + ? (isset($value) ? $connection->result("SELECT $name FROM " . table($table) . " WHERE $id = " . q($value)) : "") + : array("" => "") + get_key_vals("SELECT $id, $name FROM " . table($table) . " ORDER BY 2") + ); } return $return; } diff --git a/editor/index.php b/editor/index.php index d902e220..00008550 100644 --- a/editor/index.php +++ b/editor/index.php @@ -19,6 +19,8 @@ if (isset($_GET["download"])) { include "../adminer/edit.inc.php"; } elseif (isset($_GET["select"])) { include "../adminer/select.inc.php"; +} elseif (isset($_GET["script"])) { + include "./script.inc.php"; } else { include "./db.inc.php"; } diff --git a/editor/script.inc.php b/editor/script.inc.php new file mode 100644 index 00000000..1de9ab47 --- /dev/null +++ b/editor/script.inc.php @@ -0,0 +1,12 @@ +_foreignColumn(column_foreign_keys($_GET["source"]), $_GET["field"])) { + $result = $connection->query("SELECT $id, $name FROM " . table($table) . " WHERE $name LIKE " . q("$_GET[value]%") . " ORDER BY 2 LIMIT 11"); + for ($i=0; $i < 10 && ($row = $result->fetch_row()); $i++) { + echo "" . h($row[1]) . "