home *** CD-ROM | disk | FTP | other *** search
- SQLAdmin for PHP3
-
- An SQL Administration User Interface for the Web.
-
-
- <?
- /***************************************************************************
- * SQLAdmin v2.0 - An SQL Administration User Interface for the Web *
- * Copyright (C) 1997-98 Alessandro Vernet <avernet@scdi.org> *
- ***************************************************************************
- * This library is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU Library General Public *
- * License as published by the Free Software Foundation; either *
- * version 2 of the License, or (at your option) any later version. *
- * *
- * This library is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Library General Public License for more details. *
- * *
- * You should have received a copy of the GNU Library General Public *
- * License along with this library; if not, write to the *
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, *
- * Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-
- /* TODO:
- * - Add sort order.
- * - Add simple view.
- * - Add some documentation.
- */
-
- /* LIMITATIONS:
- * - Works only with mSQL.
- */
-
- /* HISTORY:
- * - 97-11-05 (avernet) Corrected a bug with quote.
- * - 98-01-01 (avernet) Added a sortColumn parameter to
- * administrationTable function.
- * - 98-03-14 (avernet) Added function addTable to enable users to
- * add (but not modify) en entry to the database.
- * - 98-05-19 (avernet) Submitted to PX.
- * - 98-10-11 (avernet) Now SQLAdmin works with PHP3. The PHP2 version
- * will not be mainteained anymore.
- * - 98-10-11 (avernet) SQLAdmin is now distributed under the LGPL
- * instead of MPL.
- */
-
- 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;
- }
- ?>
-