[adminer-svn] SF.net SVN: adminer:[1358] trunk/adminer
Database management in a single PHP file
Brought to you by:
jakubvrana
From: <jak...@us...> - 2010-04-02 12:14:02
|
Revision: 1358 http://adminer.svn.sourceforge.net/adminer/?rev=1358&view=rev Author: jakubvrana Date: 2010-04-02 12:13:56 +0000 (Fri, 02 Apr 2010) Log Message: ----------- Link COUNT(*) result to listing Modified Paths: -------------- trunk/adminer/include/functions.inc.php trunk/adminer/select.inc.php Modified: trunk/adminer/include/functions.inc.php =================================================================== --- trunk/adminer/include/functions.inc.php 2010-04-01 19:45:43 UTC (rev 1357) +++ trunk/adminer/include/functions.inc.php 2010-04-02 12:13:56 UTC (rev 1358) @@ -135,9 +135,9 @@ /** Find unique identifier of a row * @param array * @param array result of indexes() -* @return string query string +* @return array */ -function unique_idf($row, $indexes) { +function unique_array($row, $indexes) { foreach ($indexes as $index) { if (ereg("PRIMARY|UNIQUE", $index["type"])) { $return = array(); @@ -145,7 +145,7 @@ if (!isset($row[$key])) { // NULL is ambiguous continue 2; } - $return[] = urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($row[$key]); + $return[$key] = $row[$key]; } return $return; } @@ -153,7 +153,7 @@ $return = array(); foreach ($row as $key => $val) { if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $key)) { //! columns looking like functions - $return[] = (isset($val) ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); + $return[$key] = $val; } } return $return; Modified: trunk/adminer/select.inc.php =================================================================== --- trunk/adminer/select.inc.php 2010-04-01 19:45:43 UTC (rev 1357) +++ trunk/adminer/select.inc.php 2010-04-02 12:13:56 UTC (rev 1358) @@ -205,8 +205,12 @@ } echo ($backward_keys ? "<th>" . lang('Relations') : "") . "</thead>\n"; foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { - $unique_idf = implode('&', unique_idf($rows[$n], $indexes)); - echo "<tr" . odd() . "><td>" . checkbox("check[]", $unique_idf, in_array($unique_idf, (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . "&$unique_idf") . "'>" . lang('edit') . "</a>"); + $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)); + } + echo "<tr" . odd() . "><td>" . 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) ? '' : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . $unique_idf) . "'>" . lang('edit') . "</a>"); foreach ($row as $key => $val) { if (isset($names[$key])) { $field = $fields[$key]; @@ -219,7 +223,7 @@ $val = "<i>NULL</i>"; } else { if (ereg('blob|binary', $field["type"]) && $val != "") { - $link = h(ME . 'download=' . urlencode($TABLE) . '&field=' . urlencode($key) . "&$unique_idf"); + $link = h(ME . 'download=' . urlencode($TABLE) . '&field=' . urlencode($key) . $unique_idf); } if ($val == "") { $val = " "; @@ -240,6 +244,14 @@ } } } + if ($key == "COUNT(*)") { //! columns looking like functions + $link = h(ME . "select=" . urlencode($TABLE)); + $i = 0; + foreach ($unique_array as $k => $v) { + $link .= h("&where[$i][col]=" . urlencode($k) . "&where[$i][op]=" . (isset($v) ? "%3D&where[$i][val]=" . urlencode($v) : "IS+NULL")); + $i++; + } + } } if (!$link && is_email($val)) { $link = "mailto:$val"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |