diff --git a/edit.inc.php b/edit.inc.php index 3059bb83..053cb64c 100644 --- a/edit.inc.php +++ b/edit.inc.php @@ -2,12 +2,12 @@ $where = where($_GET); $fields = fields($_GET["edit"]); foreach ($fields as $name => $field) { - if (isset($_GET["default"]) ? $field["auto_increment"] || preg_match('~text|blob~', $field["type"]) : !isset($field["privileges"][$where ? "update" : "insert"])) { + if (isset($_GET["default"]) ? $field["auto_increment"] || preg_match('~text|blob~', $field["type"]) : !isset($field["privileges"][$where && !$_GET["clone"] ? "update" : "insert"])) { unset($fields[$name]); } } if ($_POST && !$error) { - $location = $SELF . (isset($_GET["default"]) ? "table=" : ($_POST["insert"] ? "edit=" : "select=")) . urlencode($_GET["edit"]); + $location = ($_POST["insert"] ? $_SERVER["REQUEST_URI"] : $SELF . (isset($_GET["default"]) ? "table=" : "select=") . urlencode($_GET["edit"])); if (isset($_POST["delete"])) { query_redirect("DELETE FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1", $location, lang('Item has been deleted.')); } else { @@ -29,7 +29,7 @@ if ($_POST && !$error) { } if (isset($_GET["default"])) { query_redirect("ALTER TABLE " . idf_escape($_GET["edit"]) . implode(",", $set), $location, lang('Default values has been set.')); - } elseif ($where) { + } elseif ($where && !$_GET["clone"]) { query_redirect("UPDATE " . idf_escape($_GET["edit"]) . " SET " . implode(", ", $set) . " WHERE " . implode(" AND ", $where) . " LIMIT 1", $location, lang('Item has been updated.')); } else { query_redirect("INSERT INTO " . idf_escape($_GET["edit"]) . " SET " . implode(", ", $set), $location, lang('Item has been inserted.')); @@ -47,7 +47,7 @@ if ($_POST) { } elseif ($where) { $select = array(); foreach ($fields as $name => $field) { - if (isset($field["privileges"]["select"]) && !preg_match('~binary|blob~', $field["type"])) { + if (isset($field["privileges"]["select"]) && !preg_match('~binary|blob~', $field["type"]) && (!$_GET["clone"] || !$field["auto_increment"])) { $select[] = ($field["type"] == "enum" || $field["type"] == "set" ? "1*" . idf_escape($name) . " AS " : "") . idf_escape($name); } } @@ -94,8 +94,8 @@ if ($fields) { - +" /> - +
diff --git a/index.php b/index.php index dc19619f..fe6f5bfe 100644 --- a/index.php +++ b/index.php @@ -159,7 +159,7 @@ if (isset($_GET["download"])) { while ($row = $result->fetch_assoc()) { echo '