<?php

// ------------------------------------------------------------------------- //
// Conversion du résultat d'une requête db en XML                            //
// ------------------------------------------------------------------------- //
// Auteur: Empi                                                              //
// Email:  empi@softhome.net                                                 //
// Web:                                                                      //
// ------------------------------------------------------------------------- //

/*
Cette petite classe convertit le résultat d'une requête db en XML.
Une connexion db doit être établie avant l'utilisation de cette classe.
Chaque champ retourné par la requête SQL est transformé en nœud XML.

Une fonction est disponible:

    sqlExec($db, $query, $xslFile = NULL)
        $db: nom de la db (requis).
        $query: query SQL à exécuter (requis).
        $xslFile: nom du fichier XSL à appliquer au XML (facultatif).

        Le résultat XML est dans la variable $result
*/

class sql2xml
{
    var
$result;

    function
sql2xml ()
    {
        
$this->result = '';
    }

    function
sqlExec ($db, $query, $xslFile = NULL)
    {
        
$this->result = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"".
                        
"standalone=\"yes\"?".">\n";

        if (
$xslFile != '')
            
$this->result .= "<?xml:stylesheet type=\"text/xsl\" ".
                             
"href=\"$xslFile\"?".">";

        
$rs = mysql_db_query($db, $query);

        
$fcount = mysql_num_fields($rs);
        
$numRows = mysql_num_rows($rs);
        
$this->result .= "<result num='$numRows'>\n";
        while(
$row = mysql_fetch_array( $rs ) )
        {
            
$this->result .= "<element>\n";
            for(
$i=0; $i< $fcount; $i++)
            {
                
$tag = mysql_field_name( $rs, $i );
                
$row[$i] = strip_tags ($row[$i]);
                
$this->result .= "<$tag>".$row[$i]. "</$tag>\n";
                
//echo urlencode ($row[$i])."<br>";
            
}
            
$this->result .= "</element>\n";
        }

        
$this->result .= "</result>\n";
    }
}

?>