+ " . lang('SQL command') . "\n";
+ if ($_SESSION["message"]) {
+ echo "
$_SESSION[message]
\n";
+ $_SESSION["message"] = "";
+ }
+ if ($_POST) {
+ $result = mysql_query($_POST["query"]);
+ if (!$result) {
+ echo "
" . lang('Error in query') . ": " . mysql_error() . "
\n";
+ } elseif (mysql_num_rows($result)) {
+ while ($row = mysql_fetch_assoc($result)) {
+ //! select
+ }
+ mysql_free_result($result);
+ } else {
+ mysql_free_result($result);
+ $_SESSION["message"] = sprintf(lang('Query executed OK, %d row(s) affected.'), mysql_affected_rows());
+ header("Location: " . $SELF . "sql=");
+ exit;
+ }
+ }
+ ?>
+
+ " . lang('Table') . ": " . htmlspecialchars($_GET["table"]) . "\n";
+ $result = mysql_query("SHOW FULL COLUMNS FROM " . idf_escape($_GET["table"]));
+ echo "
\n";
+ while ($row = mysql_fetch_assoc($result)) {
+ echo "" . htmlspecialchars($row["Field"]) . " | $row[Type]" . ($row["Null"] == "NO" ? " NOT NULL" : "") . " |
\n";
+ }
+ echo "
\n";
+ mysql_free_result($result);
+
+ $indexes = indexes($_GET["table"]);
+ if ($indexes) {
+ echo "
" . lang('Indexes') . "
\n";
+ echo "
\n";
+ foreach ($indexes as $type => $index) {
+ foreach ($index as $columns) {
+ sort($columns);
+ echo "$type | " . implode(", ", $columns) . " |
\n";
+ }
+ }
+ echo "
\n";
+ }
+
+ } elseif (isset($_GET["select"])) {
+ ob_end_flush();
+ echo "
" . lang('Select') . ": " . htmlspecialchars($_GET["select"]) . "
\n";
+ if ($_SESSION["message"]) {
+ echo "
$_SESSION[message]
\n";
+ $_SESSION["message"] = "";
+ }
+ echo "
" . lang('New item') . "
\n";
+ $limit = 30;
+
+ echo "
\n";
+ $result = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM " . idf_escape($_GET["select"]) . ($where ? " WHERE " . implode(" AND ", $where) : "") . " LIMIT $limit OFFSET " . ($limit * $_GET["page"]));
+ $found_rows = mysql_result(mysql_query(" SELECT FOUND_ROWS()"), 0);
+ if (!mysql_num_rows($result)) {
+ echo "
" . lang('No rows.') . "
\n";
+ } else {
+ $indexes = indexes($_GET["select"]);
+ $foreign_keys = foreign_keys($_GET["select"]);
+
+ echo "
\n";
+ $first = true;
+ while ($row = mysql_fetch_assoc($result)) {
+ if ($first) {
+ echo "" . implode(" | ", array_map('htmlspecialchars', array_keys($row))) . " | " . lang('Action') . " |
\n";
+ $first = false;
+ }
+ echo "";
+ foreach ($row as $key => $val) {
+ if (!isset($val)) {
+ $val = "NULL";
+ } else {
+ $val = htmlspecialchars($val);
+ if (count($foreign_keys[$key]) == 1) {
+ $foreign_key = $foreign_keys[$key][0];
+ $val = '">' . "$val";
+ foreach ($foreign_key[1] as $i => $source) {
+ $val = "&where[$i][col]=" . urlencode($foreign_key[2][$i]) . "&where[$i][op]=%3D&where[$i][val]=" . urlencode($row[$source]) . $val;
+ }
+ $val = '$val";
+ }
+ echo "edit | "; //! links to referencing tables
+ echo "
\n";
+ }
+ echo "
\n";
+ if ($found_rows > $limit) {
+ echo "
" . lang('Page') . ":\n";
+ for ($i=0; $i < $found_rows / $limit; $i++) {
+ echo ($i == $_GET["page"] ? $i + 1 : "" . ($i + 1) . "") . "\n";
+ }
+ echo "
\n";
+ }
+ }
+ mysql_free_result($result);
+
+ } elseif (isset($_GET["edit"])) {
+ echo "
" . lang('Edit') . ": " . htmlspecialchars($_GET["edit"]) . "
\n";
+ $where = array();
+ if (is_array($_GET["where"])) {
+ foreach ($_GET["where"] as $key => $val) {
+ $where[] = idf_escape($key) . " = BINARY '" . mysql_real_escape_string($val) . "'";
+ }
+ }
+ if (is_array($_GET["null"])) {
+ foreach ($_GET["null"] as $key) {
+ $where[] = idf_escape($key) . " IS NULL";
+ }
+ }
+ $fields = fields($_GET["edit"]);
+ if ($_POST) {
+ if (isset($_POST["delete"])) {
+ $query = "DELETE FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1";
+ $message = lang('Item has been deleted.');
+ } else {
+ $set = array();
+ foreach ($fields as $key => $field) {
+ if (preg_match('~char|text|set~', $field["type"]) ? $_POST["null"][$key] : !strlen($_POST["fields"][$key])) {
+ $value = "NULL";
+ } elseif ($field["type"] == "enum") {
+ $value = intval($_POST["fields"][$key]);
+ } elseif ($field["type"] == "set") {
+ $value = array_sum((array) $_POST["fields"][$key]);
+ } else {
+ $value = "'" . mysql_real_escape_string($_POST["fields"][$key]) . "'";
+ }
+ $set[] = idf_escape(bracket_escape($key, "back")) . " = $value";
+ }
+ if ($where) {
+ $query = "UPDATE " . idf_escape($_GET["edit"]) . " SET " . implode(", ", $set) . " WHERE " . implode(" AND ", $where) . " LIMIT 1";
+ $message = lang('Item has been updated.');
+ } else {
+ $query = "INSERT INTO " . idf_escape($_GET["edit"]) . " SET " . implode(", ", $set);
+ $message = lang('Item has been inserted.');
+ }
+ }
+ if (mysql_query($query)) {
+ $_SESSION["message"] = $message;
+ header("Location: " . $SELF . "select=" . urlencode($_GET["edit"]));
+ exit;
+ } else {
+ echo "
" . lang('Error during saving') . ": " . htmlspecialchars(mysql_error()) . "
\n";
+ }
+ }
+ if ($_POST) {
+ $data = $_POST["fields"];
+ } elseif ($where) {
+ $select = array("*");
+ foreach ($fields as $name => $field) {
+ if ($field["type"] == "enum" || $field["type"] == "set") {
+ $select[] = "1*" . idf_escape($name) . " AS " . idf_escape($name);
+ }
+ }
+ $data = mysql_fetch_assoc(mysql_query("SELECT " . implode(", ", $select) . " FROM " . idf_escape($_GET["edit"]) . " WHERE " . implode(" AND ", $where) . " LIMIT 1"));
+ } else {
+ $data = array();
+ }
+ ?>
+
+
+
+
+
+
+