Mega Code Archive

 
Categories / Php / MySQL Database
 

An SQL Administration User Interface for the Web

<? /* TODO: * - Add sort order. * - Add simple view. * - Add some documentation. */ /* LIMITATIONS: * - Works only with mSQL. */ function escapeforhtml ($string) { $result = $string; //$result = ereg_replace ("\"", """, $result); $result = ereg_replace ("<", "<", $result); $result = ereg_replace (">", ">", $result); return $result; } function displayTuple ($fieldsNumber, $fieldNames, $fieldLengths, $values, $mode) { $result = ""; $result .= "<FORM METHOD=\"post\"><TABLE BORDER><TR>" . "<TD BGCOLOR=\"#CCCCFF\">"; $result .= "<TABLE CELLSPACING=\"0\" CELLPADDING=\"0\">"; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $result .= "<TR><TD>" . $fieldNames [$fieldIndex] . "</TD><TD>"; if ($fieldLengths [$fieldIndex] <= 128) { $result .= "<INPUT TYPE=\"text\" NAME=\"" . $fieldNames [$fieldIndex] . "\" VALUE=\"" . $values [$fieldIndex] . "\" SIZE=\"64\">"; } else { $result .= "<TEXTAREA NAME=\"" . $fieldNames [$fieldIndex] . "\"" . " COLS=\"64\" ROWS=\"10\" WRAP=\"virtual\">" . escapeforhtml ($values [$fieldIndex]) . "</TEXTAREA>"; } $result .= "<INPUT TYPE=\"hidden\" NAME=\"old-" . $fieldNames [$fieldIndex] . "\" VALUE=\"" . escapeforhtml ($values [$fieldIndex]) . "\">" . "</TD></TR>"; $fieldIndex++; } $result .= "<TR><TD ALIGN=\"center\" COLSPAN=\"2\">"; if ($mode == "modify") { $result .= "<INPUT TYPE=\"submit\" NAME=\"remove\" VALUE=\"Remove\">"; $result .= "<INPUT TYPE=\"submit\" NAME=\"update\" VALUE=\"Update\">"; } else { $result .= "<INPUT TYPE=\"submit\" NAME=\"add\" VALUE=\"Add\">"; } $result .= "</TABLE></TD></TR></TABLE></FORM>"; return $result; } function fieldFromType ($text, $type) { if ($type == "int" || $type == "uint" || $type == "real") { $result = $text; } else { $result = "'" . AddSlashes ($text) . "'"; } return $result; } function executeMsql ($database, $command) { /*echo "<TT>" . $command . "</TT><HR>";*/ msql ($database, $command); } function handleRemove ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes) { global $remove; if ($remove != "") { $command = "DELETE FROM " . $table . " WHERE "; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $fieldName = "old-" . $fieldNames [$fieldIndex]; global $$fieldName; $command .= $fieldNames [$fieldIndex] . "=" . fieldFromType ($$fieldName, $fieldTypes [$fieldIndex]); if ($fieldIndex != $fieldsNumber - 1) { $command .= " AND "; } $fieldIndex++; } executeMsql ($database, $command); } } function handleUpdate ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes) { global $update; if ($update != "") { $command = "UPDATE " . $table . " SET "; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $fieldName = $fieldNames [$fieldIndex]; global $$fieldName; $command .= $fieldName . "=" . fieldFromType ($$fieldName, $fieldTypes [$fieldIndex]); if ($fieldIndex != $fieldsNumber - 1) { $command .= ", "; } $fieldIndex++; } $command .= " WHERE "; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $fieldName = "old-" . $fieldNames [$fieldIndex]; global $$fieldName; $command .= $fieldNames [$fieldIndex] . "=" . fieldFromType ($$fieldName, $fieldTypes [$fieldIndex]); if ($fieldIndex != $fieldsNumber - 1) { $command .= " AND "; } $fieldIndex++; } executeMsql ($database, $command); } } function handleAdd ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes) { global $add; if ($add != "") { $command = "INSERT INTO " . $table . " ("; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $command .= $fieldNames [$fieldIndex]; if ($fieldIndex != $fieldsNumber - 1) { $command .= ", "; } $fieldIndex++; } $command .= ") VALUES ("; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $fieldName = $fieldNames [$fieldIndex]; global $$fieldName; $command .= fieldFromType ($$fieldName, $fieldTypes [$fieldIndex]); if ($fieldIndex != $fieldsNumber - 1) { $command .= ", "; } $fieldIndex++; } $command .= ")"; executeMsql ($database, $command); } } function displayRemoveUpdate ($database, $table, $sortColumn, $fieldsNumber, $fieldNames, $fieldLengths) { $result = ""; if ($sortColumn != "") { $sortColumn = " ORDER BY " . $sortColumn; } $msqlresult = msql ($database, "SELECT * FROM " . $table . $sortColumn); $tuplesNumber = msql_numrows ($msqlresult); $tupleIndex = 0; while ($tupleIndex < $tuplesNumber) { $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $values [$fieldIndex] = msql_result ($msqlresult, $tupleIndex, $fieldNames [$fieldIndex]); $fieldIndex++; } $result .= displayTuple ($fieldsNumber, $fieldNames, $fieldLengths, $values, "modify"); $tupleIndex++; } return $result; } function displayAdd ($fieldsNumber, $fieldNames, $fieldLengths) { $result = ""; $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $values [$fieldIndex] = ""; $fieldIndex++; } $result .= displayTuple ($fieldsNumber, $fieldNames, $fieldLengths, $values, "add"); msql_close (); return $result; } function administrationTable ($database, $table, $sortColumn) { $result = ""; msql_connect ( "localhost"); $msqlresult = msql ($database, "SELECT * FROM " . $table); $fieldsNumber = msql_numfields ($msqlresult); $msqlresult = msql_listfields ($database, $table); $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $fieldNames [$fieldIndex] = msql_fieldname ($msqlresult, $fieldIndex); $fieldLengths [$fieldIndex] = msql_fieldlen ($msqlresult, $fieldIndex); $fieldTypes [$fieldIndex] = msql_fieldtype ($msqlresult, $fieldIndex); $fieldIndex++; } handleRemove ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes); handleUpdate ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes); handleAdd ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes); $result .= displayRemoveUpdate ($database, $table, $sortColumn, $fieldsNumber, $fieldNames, $fieldLengths); $result .= displayAdd ($fieldsNumber, $fieldNames, $fieldLengths); return $result; } function addTable ($database, $table) { $result = ""; msql_connect ( "localhost"); $msqlresult = msql ($database, "SELECT * FROM " . $table); $fieldsNumber = msql_numfields ($msqlresult); $msqlresult = msql_listfields ($database, $table); $fieldIndex = 0; while ($fieldIndex < $fieldsNumber) { $fieldNames [$fieldIndex] = msql_fieldname ($msqlresult, $fieldIndex); $fieldLengths [$fieldIndex] = msql_fieldlen ($msqlresult, $fieldIndex); $fieldTypes [$fieldIndex] = msql_fieldtype ($msqlresult, $fieldIndex); $fieldIndex++; } handleAdd ($database, $table, $fieldsNumber, $fieldNames, $fieldLengths, $fieldTypes); $result .= displayAdd ($fieldsNumber, $fieldNames, $fieldLengths); return $result; } ?>