query("DROP TABLE " . idf_escape($_GET["create"]))) { redirect(substr($SELF, 0, -1), lang('Table has been dropped.')); } } else { $auto_increment_index = " PRIMARY KEY"; if (strlen($_GET["create"]) && strlen($_POST["fields"][$_POST["auto_increment_col"]]["orig"])) { foreach (indexes($_GET["create"]) as $index) { foreach ($index["columns"] as $column) { if ($column === $_POST["fields"][$_POST["auto_increment_col"]]["orig"]) { $auto_increment_index = ""; break 2; } } if ($index["type"] == "PRIMARY") { $auto_increment_index = " UNIQUE"; } } } $fields = array(); ksort($_POST["fields"]); $after = "FIRST"; foreach ($_POST["fields"] as $key => $field) { if (strlen($field["field"]) && isset($types[$field["type"]])) { $fields[] = (!strlen($_GET["create"]) ? "" : (strlen($field["orig"]) ? "CHANGE " . idf_escape($field["orig"]) . " " : "ADD ")) . idf_escape($field["field"]) . process_type($field) . ($field["null"] ? " NULL" : " NOT NULL") // NULL for timestamp . ($key == $_POST["auto_increment_col"] ? " AUTO_INCREMENT$auto_increment_index" : "") . " COMMENT '" . $mysql->escape_string($field["comment"]) . "'" . (strlen($_GET["create"]) && !strlen($field["orig"]) ? $after : "") ; $after = "AFTER " . idf_escape($field["field"]); } elseif (strlen($field["orig"])) { $fields[] = "DROP " . idf_escape($field["orig"]); } } $status = ($_POST["Engine"] ? " ENGINE='" . $mysql->escape_string($_POST["Engine"]) . "'" : "") . ($_POST["Collation"] ? " COLLATE '" . $mysql->escape_string($_POST["Collation"]) . "'" : "") . (strlen($_POST["Auto_increment"]) ? " AUTO_INCREMENT=" . intval($_POST["Auto_increment"]) : "") . " COMMENT='" . $mysql->escape_string($_POST["Comment"]) . "'" ; if (strlen($_GET["create"])) { $query = "ALTER TABLE " . idf_escape($_GET["create"]) . " " . implode(", ", $fields) . ", RENAME TO " . idf_escape($_POST["name"]) . ", $status"; $message = lang('Table has been altered.'); } else { $query = "CREATE TABLE " . idf_escape($_POST["name"]) . " (" . implode(", ", $fields) . ")$status"; $message = lang('Table has been created.'); } if ($mysql->query($query)) { redirect($SELF . "table=" . urlencode($_POST["name"]), $message); } } $error = $mysql->error; } page_header((strlen($_GET["create"]) ? lang('Alter table') : lang('Create table')), $error, array("table" => $_GET["create"]), $_GET["create"]); $engines = array(); $result = $mysql->query("SHOW ENGINES"); while ($row = $result->fetch_assoc()) { if ($row["Support"] == "YES" || $row["Support"] == "DEFAULT") { $engines[] = $row["Engine"]; } } $result->free(); if ($_POST) { $row = $_POST; ksort($row["fields"]); $row["fields"] = array_values($row["fields"]); if ($_POST["add"]) { array_splice($row["fields"], key($_POST["add"]), 0, array(array())); } if ($row["auto_increment_col"]) { $row["fields"][$row["auto_increment_col"] - 1]["auto_increment"] = true; } } elseif (strlen($_GET["create"])) { $row = table_status($_GET["create"]); if ($row["Engine"] == "InnoDB") { $row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["Comment"]); } $row["name"] = $_GET["create"]; $row["fields"] = array_values(fields($_GET["create"])); } else { $row = array("fields" => array(array("field" => ""))); } $collations = collations(); ?>