/********************************************* ***************************************
* SQLAdmin v2.0 - SQL Web 用の管理 ユーザー インターフェイス *
* Copyright (C) 1997-98 Alessandro Vernet
********************************************* ***************************************
* この ライブラリ は無料 ソフトウェアです。 あなたは、それを再配布したり、*
* GNU Library General Public *
* License として修正したりすることができます。 Free Software Foundation によって発行されます。 ライセンスの *
* ライセンスのバージョン 2 、または ( オプションで) それ以降の バージョン。 *
* *
* これライブラリ は、 役立つことを期待して 配布されていますが、 *
* ただし、いかなる保証もありません。 たとえ商品性や特定の目的への適合性についての暗黙の保証もありません。 詳細については、GNU *
* ライブラリ 一般 パブリック ライセンス をご覧ください。 *
* *
* あなたこのライブラリとともに、GNU ライブラリの一般公開 *
* ライセンスのコピー を受け取っている必要があります。 そうでない場合は、 *
に記入してください。 * 無料 ソフトウェア Foundation, Inc.、 59 Temple Place - Suite 330、 *
* ボストン、マサチューセッツ州02111-1307、米国。 *
********************************************* ***************************************/
/ * TODO:
* - 並べ替え順序を追加します。
* - シンプル ビューを追加します。
* - ドキュメントを追加します。
*/
/* 制限事項:
* - mSQL でのみ動作します。
*/
/* 歴史:
* - 97-11-05 (avernet) 引用文付きで バグを修正しました。
* - 98-01-01 (avernet)
* administrationTable 関数に sortColumn パラメータ を追加しました。
* - 98-03-14 (avernet) ユーザーが
* データベースにエントリを追加できるように addTable 追加されました。
* - 98-05-19 (avernet) PX に送信されました。
* - 98-10-11 (avernet) SQLAdmin が PHP3 で動作するようになりました。 PHP2 バージョン
* は今後メンテナンスされなくなります。
* - 98-10-11 (avernet) SQLAdmin は現在、 MPL ではなく LGPL
* の下で配布されています。
*/
関数 escapeforhtml ($string)
{
$result = $string;
//$result = ereg_replace (""", """, $result);
$result = ereg_replace ("<", "<", $result);
$result = ereg_replace (">", ">", $result);
$result を返す;
}
function displayTuple ($fieldsNumber, $fieldNames,
$fieldLengths, $values, $mode)
{
$result = "";
$result .= "";
$result を返す;
}
関数 fieldFromType ($text, $type)
{
if ($type == "int" || $type == "uint" || $type == "本物")
{ $result = $text; }
else
{ $result = "'" 。 AddSlashes ($text) 。 ""; }
return $result;
}
function executeMsql ($database, $command)
{
/*echo "" 。 $コマンド 。 "
";*/
msql ($database, $command);
}
関数 handleRemove ($database, $table, $fieldsNumber,
$fieldNames, $fieldLengths, $fieldTypes)
{
グローバル $remove;
if ($remove != "")
{
$command = "DELETE FROM " 。 $テーブル 。 " どこ ";
$fieldIndex = 0;
while ($fieldIndex < $fieldsNumber)
{
$fieldName = "old-" 。 $fieldNames [$fieldIndex];
グローバル $$フィールド名;
$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)
{
グローバル $update;
if ($update != "")
{
$command = "UPDATE " 。 $テーブル 。 " セット ";
$fieldIndex = 0;
while ($fieldIndex < $fieldsNumber)
{
$fieldName = $fieldNames [$fieldIndex];
グローバル $$フィールド名;
$command .= $fieldName 。 「= 。
fieldFromType ($$fieldName, $fieldTypes [$fieldIndex]);
if ($fieldIndex != $fieldsNumber - 1)
{ $command .= ", "; }
$fieldIndex ;
}
$command .= " WHERE ";
$fieldIndex = 0;
while ($fieldIndex < $fieldsNumber)
{
$fieldName = "old-" 。 $fieldNames [$fieldIndex];
グローバル $$フィールド名;
$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 " 。 $テーブル 。 " (";
$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;
}
関数 displayAdd ($fieldsNumber, $fieldNames, $fieldLengths)
{
$result = "";
$fieldIndex = 0;
while ($fieldIndex < $fieldsNumber)
{
$values [$fieldIndex] = "";
$fieldIndex ;
}
$result .= displayTuple ($fieldsNumber, $fieldNames,
$fieldLengths, $values, "add");
msql_close ();
$result を返す;
}
関数 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);
$result を返す;
}
関数 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);
$result を返す;
}
?>