diff --git a/adminer/edit.inc.php b/adminer/edit.inc.php index edae47b5..0b6b3fbc 100644 --- a/adminer/edit.inc.php +++ b/adminer/edit.inc.php @@ -11,7 +11,7 @@ foreach ($fields as $name => $field) { if ($_POST && !$error && !isset($_GET["select"])) { $location = $_POST["referer"]; if ($_POST["insert"]) { // continue edit or insert - $location = $_SERVER["REQUEST_URI"]; //! doesn't work with change in &where field + $location = ($update ? ME . "&edit=" . urlencode($TABLE) . unique_idf($_POST["fields"], indexes($TABLE)) : $_SERVER["REQUEST_URI"]); //! doesn't work with functions } elseif (!ereg('^.+&select=.+$', $location)) { $location = ME . "select=" . urlencode($TABLE); $i = 0; // append &set converted to &where diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index bb61d4d7..90a12817 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -159,6 +159,19 @@ function unique_array($row, $indexes) { return $return; } +/** Get query string for unique identifier of a row +* @param array +* @param array result of indexes() +* @return string +*/ +function unique_idf($row, $indexes) { + $return = ""; + foreach (unique_array($row, $indexes) as $key => $val) { + $return .= "&" . (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); + } + return $return; +} + /** Create SQL condition from parsed query string * @param array parsed query string * @return string diff --git a/adminer/select.inc.php b/adminer/select.inc.php index 847363b8..a24b78b0 100644 --- a/adminer/select.inc.php +++ b/adminer/select.inc.php @@ -205,11 +205,7 @@ if (!$columns) { } echo ($backward_keys ? "" . lang('Relations') : "") . "\n"; foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { - $unique_array = unique_array($row, $indexes); - $unique_idf = ""; - foreach ($unique_array as $key => $val) { - $unique_idf .= "&" . (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); - } + $unique_idf = unique_idf($row, $indexes); echo "" . checkbox("check[]", substr($unique_idf, 1), in_array(substr($unique_idf, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . (count($select) != count($group) || information_schema(DB) ? '' : " " . lang('edit') . ""); foreach ($row as $key => $val) { if (isset($names[$key])) { @@ -247,7 +243,7 @@ if (!$columns) { if ($key == "COUNT(*)") { //! columns looking like functions $link = h(ME . "select=" . urlencode($TABLE)); $i = 0; - foreach ($unique_array as $k => $v) { + foreach (unique_array($row, $indexes) as $k => $v) { $link .= h("&where[$i][col]=" . urlencode($k) . "&where[$i][op]=" . (isset($v) ? "%3D&where[$i][val]=" . urlencode($v) : "IS+NULL")); $i++; } diff --git a/changes.txt b/changes.txt index ab456c2d..92780f94 100644 --- a/changes.txt +++ b/changes.txt @@ -1,5 +1,7 @@ Adminer 2.3.1-dev: Add Drop button to Alter pages (regression from 2.0.0) +Link COUNT(*) result to listing +Newlines in select query edit Return to referer after edit Adminer 2.3.0 (released 2010-02-26):