1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| //************************************************************************************************
//* Execute une requête et renvoi un fichier XML formaté pour TSimpleDataSet
//************************************************************************************************
function DecodeFieldType($Type)
{
$Data = preg_split("/[()]/", $Type);
switch ($Data[0])
{
case "tinyint" :
case "bigint" :
return "fieldtype=\"int\"";
case "decimal" :
$Precision = explode(",", $Data[1]);
return "fieldtype=\"fixed\" DECIMALS=\"$Precision[1]\" WIDTH=\"$Precision[0]\"";
case "varbinary" :
case "char" :
case "varchar" :
return "fieldtype=\"string\" WIDTH=\"$Data[1]\"";
case "text" :
case "tinytext" :
case "longtext" :
return "fieldtype=\"bin.hex\" SUBTYPE=\"WideText\"";
case "timestamp" :
return "fieldtype=\"dateTime\"";
default :
return "fieldtype=\"$Data[0]\"";
}
}
function QueryCDS($Query)
{
Header("Content-type: text/xml; charset=UTF-8");
QueryExecute("CREATE TEMPORARY TABLE TempTable " .$Query);
$XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>" .CR;
$XML .= "<DATAPACKET Version=\"2.0\">" .CR;
$XML .= TAB1 ."<METADATA>" .CR;
$XML .= TAB2 ."<FIELDS>" .CR;
$Fields = array();
$Result = QueryExecute("SHOW COLUMNS FROM TempTable;");
if (mysql_num_rows($Result) > 0)
while ($Row = mysql_fetch_assoc($Result))
{
$Fields[] = $Row["Field"];
$XML .= TAB3 ."<FIELD attrname=\"$Row[Field]\" " .DecodeFieldType($Row["Type"]) ." />" .CR;
}
$XML .= TAB2 ."</FIELDS>" .CR;
$XML .= TAB1 ."</METADATA>" .CR;
$XML .= TAB1 ."<ROWDATA>" .CR;
$Result = QueryExecute("Select * from TempTable");
while ($Row = mysql_fetch_array($Result))
{
$XML .= TAB2 ."<ROW ";
foreach ($Fields as $Field)
{
$s = mb_encode_numericentity ($Row[$Field], array (0x0080, 0xffff, 0, 0xffff), "UTF-8");
$XML .= "$Field=\"$s\" ";
}
$XML .= "/>" .CR;
}
$XML .= TAB1 ."</ROWDATA>" .CR;
$XML .= "</DATAPACKET>";
return $XML;
} |
Partager