<?
/*************************************************************************************
*SQLAdminv2.0-AnSQLAdministrationUserInterfacefortheWeb *
*Copyright(C)1997-98AlessandroVernet<avernet@scdi.org>*
*************************************************************************************
*Thislibraryisfreesoftware;youcanredistributeitand/or*
*modifyitunderthetermsoftheGNULibraryGeneralPublic*
*LicenseaspublishedbytheFreeSoftwareFoundation;either*
*version2oftheLicense,or(atyouroption)anylaterversion.*
**
*Thislibraryisdistributedinthehopethatitwillbeuseful,*
*butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof*
*MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.SeetheGNU*
*LibraryGeneralPublicLicenseformoredetails.*
**
*YoushouldhavereceivedacopyoftheGNULibraryGeneralPublic *
*Licensealongwiththislibrary;ifnot,writetothe*
*FreeSoftwareFoundation,Inc.,59TemplePlace-Suite330,*
*Boston,MA02111-1307,USA.*
*************************************************************************************/
/*TODO:
*-Addsortorder.
*-Addsimpleview.
*-Addsomedocumentation.
*/
/*LIMITATIONS:
*-WorksonlywithmSQL.
*/
/*HISTORY:
*-97-11-05(avernet)Correctedabugwithquote.
*-98-01-01(avernet)AddedasortColumnparameterto
*administrationTablefunction.
*-98-03-14(avernet)AddedfunctionaddTabletoenableusersto
*add(butnotmodify)enentrytothedatabase.
*-98-05-19(avernet)SubmittedtoPX.
*-98-10-11(avernet)NowSQLAdminworkswithPHP3.ThePHP2version
*willnotbemainteainedanymore.
*-98-10-11(avernet)SQLAdminisnowdistributedundertheLGPL
*insteadofMPL.
*/
functionescapeforhtml($string)
{
$result=$string;
//$result=ereg_replace(""",""",$result);
$result=ereg_replace("<","<",$result);
$result=ereg_replace(">",">",$result);
return$result;
}
functiondisplayTuple($fieldsNumber,$fieldNames,
$fieldLengths,$values,$mode)
{
$result="";
$result.="<FORMMETHOD="post"><TABLEBORDER><TR>".
"<TDBGCOLOR="#CCCCFF">";
$result.="<TABLECELLSPACING="0"CELLPADDING="0">";
$fieldIndex=0;
while($fieldIndex<$fieldsNumber)
{
$result.="<TR><TD>".$fieldNames[$fieldIndex]."</TD><TD>";
if($fieldLengths[$fieldIndex]<=128)
{
$result.="<INPUTTYPE="text"NAME="".
$fieldNames[$fieldIndex].""VALUE="".
$values[$fieldIndex].""SIZE="64">";
}
else
{
$result.="<TEXTAREANAME="".
$fieldNames[$fieldIndex].""".
"COLS="64"ROWS="10"WRAP="virtual">".
escapeforhtml($values[$fieldIndex])."</TEXTAREA>";
}
$result.="<INPUTTYPE="hidden"NAME="old-".
$fieldNames[$fieldIndex].
""VALUE="".escapeforhtml($values[$fieldIndex])."">".
"</TD></TR>";
$fieldIndex++;
}
$result.="<TR><TDALIGN="center"COLSPAN="2">";
if($mode=="modify")
{
$result.="<INPUTTYPE="submit"NAME="remove"VALUE="Remove">";
$result.="<INPUTTYPE="submit"NAME="update"VALUE="Update">";
}
else
{$result.="<INPUTTYPE="submit"NAME="add"VALUE="Add">";}
$result.="</TABLE></TD></TR></TABLE></FORM>";
return$result;
}
functionfieldFromType($text,$type)
{
if($type=="int"||$type=="uint"||$type== "real")
{$result=$text;}
else
{$result="'".AddSlashes($text)."'";}
return$result;
}
functionexecuteMsql($database,$command)
{
/*echo"<TT>".$command."</TT><HR>";*/
msql($database,$command);
}
functionhandleRemove($database,$table,$fieldsNumber,
$fieldNames,$fieldLengths,$fieldTypes)
{
global$remove;
if($remove!="")
{
$command="DELETEFROM".$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);
}
}
functionhandleUpdate($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);
}
}
functionhandleAdd($database,$table,$fieldsNumber,
$fieldNames,$fieldLengths,$fieldTypes)
{
global$add;
if($add!="")
{
$command="INSERTINTO".$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);
}
}
functiondisplayRemoveUpdate($database,$table,$sortColumn,
$fieldsNumber,$fieldNames,$fieldLengths)
{
$result="";
if($sortColumn!="")
{$sortColumn="ORDERBY".$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;
}
functiondisplayAdd($fieldsNumber,$fieldNames,$fieldLengths)
{
$result="";
$fieldIndex=0;
while($fieldIndex<$fieldsNumber)
{
$values[$fieldIndex]="";
$fieldIndex++;
}
$result.=displayTuple($fieldsNumber,$fieldNames,
$fieldLengths,$values,"add");
msql_close();
return$result;
}
functionadministrationTable($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;
}
functionaddTable($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;
}
?>