home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / src / PHP / mysql2xml.php3.txt < prev    next >
Encoding:
Text File  |  2002-05-06  |  7.9 KB  |  238 lines

  1. MySQL2XML 
  2.  
  3. Class to generate an XML document from a mysql table. You define the database and table names and the xmltagnames to be used for each tablefield. Where clauses are also supported. REQUIRES the MySQL Database class by me. Also available here 
  4.  
  5.  
  6.  
  7. <?php 
  8. /* 
  9. This is a sample script. Paste this in to 
  10. an empty php3 file and run it. 
  11.  
  12. if( empty($xml_inc_php3) ) 
  13.    include("xml.inc.php3"); 
  14.  
  15.    $XMLGenerator = new XMLDefinition( "hostname", "databasename", "username", "password", "tablename", "rootnodename", "rownodename","iso-8859-1"); 
  16.    $XMLGenerator->AddNode( "id", "recordid" ); 
  17.    $XMLGenerator->AddNode( "prj_id", "projectid" ); 
  18.    $XMLGenerator->AddNode( "subprj_id", "subprjid" ); 
  19.    $XMLGenerator->AddNode( "taet_id", "whatid" ); 
  20.    $XMLGenerator->AddNode( "mitarb_id", "programerid" ); 
  21.    $XMLGenerator->AddNode( "Bemerkung", "comment", 1 , 1); 
  22.    $XMLGenerator->AddNode( "Wert", "duration" ); 
  23.    $XMLGenerator->AddNode( "Datum", "date" ); 
  24.    $XMLGenerator->AddRestriction("projectid", "=", "57"); 
  25.  
  26.    echo $XMLGenerator->GetXML(); 
  27.    //$XMLGenerator->EchoXML(); 
  28. */ 
  29. /* 
  30.  
  31.   This class REQUIRES the mysql Database Class by me available 
  32.   from http://phpbuilder.px.sklar.com. 
  33.   You can contact me by mail at adi@living-source.com. 
  34.  
  35. */ 
  36. if( empty($database_inc_php3) ) 
  37.    include( "database.inc.php3"); 
  38.  
  39.      class NodeDefinition 
  40.      { 
  41.         var $SQLFieldName; 
  42.         var $XMLNodeName; 
  43.         var $CDATANodeBeg; 
  44.         var $CDATANodeEnd; 
  45.         var $Operator; 
  46.         var $Value; 
  47.         var $CharField; 
  48.  
  49.         function NodeDefinition($SQLField, $XMLNode, $bCDATA = 0, $Char = 0) 
  50.         { 
  51.            global $__debug__; 
  52.            $this->SQLFieldName   = $SQLField; 
  53.            $this->XMLNodeName    = $XMLNode; 
  54.  
  55.            if( $bCDATA != 0 ) 
  56.            { 
  57.             $this->CDATANodeBeg     =  "<![CDATA["; 
  58.             $this->CDATANodeEnd     =  "]]>"; 
  59.            } 
  60.            else 
  61.            { 
  62.             $this->CDATANodeBeg     =  ""; 
  63.             $this->CDATANodeEnd     =  ""; 
  64.            } 
  65.  
  66.            if( $Char != 0) 
  67.                $this->CharField =  "'"; 
  68.         } 
  69.         function AddRestriction( $Op, $Val) 
  70.         { 
  71.            global $__debug__; 
  72.  
  73.            $this->Operator    = $Op; 
  74.            $this->Value       = $Val; 
  75.         } 
  76.      } 
  77.  
  78.      class XMLDefinition 
  79.      { 
  80.         var $UserName; 
  81.         var $Password; 
  82.         var $DataBaseHost; 
  83.         var $DataBaseName; 
  84.         var $SQLDataSource; 
  85.         var $XMLRootName; 
  86.         var $XMLRecordNodeName; 
  87.         var $NodeList; 
  88.         var $iNumNodes; 
  89.         var $SQLString; 
  90.         var $Encoding; 
  91.  
  92.         function XMLDefinition( $DBHost, $DBName, $Usr, $Pwd, $SQLTable, $XMLRoot, $XMLRecord =  "record", $Enc =  "iso-8859-1") 
  93.         { 
  94.            global $__debug__; 
  95.            $this->DataBaseHost      = $DBHost; 
  96.            $this->DataBaseName      = $DBName; 
  97.            $this->UserName          = $Usr; 
  98.            $this->Password          = $Pwd; 
  99.            $this->SQLDataSource     = $SQLTable; 
  100.            $this->XMLRootName       = $XMLRoot; 
  101.            $this->XMLRecordNodeName = $XMLRecord; 
  102.            $this->Encoding          = $Enc; 
  103.            $this->iNumNodes = 0; 
  104.         } 
  105.  
  106.         function AddNode( $SQLField, $XMLNode, $bCDATA = 0, $Char = 0 ) 
  107.         { 
  108.            global $__debug__; 
  109.            $this->NodeList[$this->iNumNodes] = new NodeDefinition($SQLField, $XMLNode, $bCDATA, $Char); 
  110.            $this->iNumNodes++; 
  111.         } 
  112.  
  113.         function AddRestriction( $XMLNode, $Oper, $Valu ) 
  114.         { 
  115.            global $__debug__; 
  116.             $CurNode = false; 
  117.  
  118.             for($i=0; $i < $this->iNumNodes; $i++) 
  119.             { 
  120.                $CurNode = $this->NodeList[$i]; 
  121.                if( $CurNode->XMLNodeName == $XMLNode ) 
  122.                { 
  123.                   if( $CurNode ) 
  124.                   { 
  125.                      $CurNode->AddRestriction( $Oper, $Valu); 
  126.                      $this->NodeList[$i] = $CurNode; 
  127.                   } 
  128.  
  129.                   break; 
  130.                } 
  131.             } 
  132.  
  133.  
  134.         } 
  135.  
  136.         function GenerateSQL() 
  137.         { 
  138.            global $__debug__; 
  139.  
  140.            $this->SQLString =  ""; 
  141.            $SQLString =  "SELECT "; 
  142.            $WhereString =  " WHERE "; 
  143.             for($i=0; $i < $this->iNumNodes; $i++) 
  144.             { 
  145.                $CurNode = $this->NodeList[$i]; 
  146.                $SQLString = $SQLString . $CurNode->SQLFieldName; 
  147.                if( $i < $this->iNumNodes-1 ) 
  148.                   $SQLString = $SQLString .  ","; 
  149.                $SQLString = $SQLString .  " "; 
  150.  
  151.                if( strlen($CurNode->Operator) > 0 && 
  152.                      strlen($CurNode->Value) > 0 ) 
  153.                { 
  154.                   $WhereString = $WhereString . $CurNode->SQLFieldName . 
  155.                                   " " . $CurNode->Operator .  " " . $CurNode->CharField . 
  156.                                  $CurNode->Value . $CurNode->CharField.  " AND "; 
  157.                } 
  158.             } 
  159.  
  160.             $SQLString = $SQLString .  "FROM " . $this->SQLDataSource; 
  161.  
  162.             if( substr($WhereString, strlen($WhereString)-5,5) == " AND " ) 
  163.             { 
  164.                $WhereString = substr($WhereString, 0,strlen($WhereString)-5); 
  165.                $SQLString = $SQLString .  " " . $WhereString; 
  166.             } 
  167.  
  168.  
  169.  
  170.             $this->SQLString = $SQLString; 
  171.            if( $__debug__ == 1) 
  172.             echo  "<br>" . $this->SQLString; 
  173.         } 
  174.  
  175.         function EchoXML() 
  176.         { 
  177.            global $__debug__; 
  178.             if( strlen($this->SQLString) == 0 ) 
  179.                $this->GenerateSQL(); 
  180.  
  181.             $opDataBase = new MySQLDatabase; 
  182.             $opDataBase->Open( $this->DataBaseName, $this->DataBaseHost, $this->UserName, $this->Password ); 
  183.             $opDataBase->Query($this->SQLString); 
  184.  
  185.             echo  "<?xml version=\"1.0\" encoding=\"" . $this->Encoding .  "\"?>"; 
  186.             echo  "<" . $this->XMLRootName .  ">"; 
  187.             while( $opDataBase->NextRow()) 
  188.             { 
  189.                echo  "<" . $this->XMLRecordNodeName .  ">"; 
  190.                for($i=0; $i < $this->iNumNodes; $i++) 
  191.                { 
  192.                   $CurNode = $this->NodeList[$i]; 
  193.  
  194.                   echo  "<" . $CurNode->XMLNodeName .  ">" . $CurNode->CDATANodeBeg . 
  195.                         $opDataBase->GetField( $CurNode->SQLFieldName) . 
  196.                         $CurNode->CDATANodeEnd .  "</" . $CurNode->XMLNodeName .  ">"; 
  197.                } 
  198.                echo  "</" . $this->XMLRecordNodeName .  ">"; 
  199.  
  200.             } 
  201.             echo  "</" . $this->XMLRootName .  ">"; 
  202.         } 
  203.  
  204.         function GetXML() 
  205.         { 
  206.            global $__debug__; 
  207.             if( strlen($this->SQLString) == 0 ) 
  208.                $this->GenerateSQL(); 
  209.  
  210.             $opDataBase = new MySQLDatabase; 
  211.             $opDataBase->Open( $this->DataBaseName, $this->DataBaseHost, $this->UserName, $this->Password ); 
  212.             $opDataBase->Query($this->SQLString); 
  213.  
  214.             $ret =  "<?xml version=\"1.0\" encoding=\""  . $this->Encoding .  "\"?>"; 
  215.             $ret = $ret .  "<" . $this->XMLRootName .  ">"; 
  216.             while( $opDataBase->NextRow()) 
  217.             { 
  218.                $ret .=  "<" . $this->XMLRecordNodeName .  ">"; 
  219.                for($i=0; $i < $this->iNumNodes; $i++) 
  220.                { 
  221.                   $CurNode = $this->NodeList[$i]; 
  222.  
  223.                   $ret .=  "<" . $CurNode->XMLNodeName .  ">" . $CurNode->CDATANodeBeg . 
  224.                         $opDataBase->GetField( $CurNode->SQLFieldName) . 
  225.                         $CurNode->CDATANodeEnd .  "</" . $CurNode->XMLNodeName .  ">"; 
  226.                } 
  227.               $ret .=  "</" . $this->XMLRecordNodeName .  ">"; 
  228.  
  229.             } 
  230.             $ret .=  "</" . $this->XMLRootName .  ">"; 
  231.  
  232.             return $ret; 
  233.         } 
  234.      } 
  235.    $xml_inc_php3 = 1; 
  236. ?> 
  237.  
  238.