<?       /*************************************************************************************       *        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;       }   ?>