Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
<?php
$myxml = new CMySqlXML("localhost", "test_user", "password", "test");
echo $myxml->run_sql_return_xml("SELECT * FROM users");
class CMySqlXML {
var $host;
var $user;
var $password;
var $db;
function CMySqlXML($host, $user, $password, $db) {
$this->host = $host;
$this->user = $user;
$this->password = $password;
$this->db = $db;
}
function run_sql_return_xml($sql_string) {
$connection = mysql_connect($this->host, $this->user, $this->password,
$this->db);
mysql_select_db($this->db);
$result = mysql_query($sql_string);
$doc = domxml_open_mem("<root/>");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$num_fields = mysql_num_fields($result);
$row_element = $doc->create_element(mysql_field_table($result, 0));
$doc_root = $doc->document_element();
$row_element = $doc_root->append_child($row_element);
for ($i = 0; $i < $num_fields; $i++) {
$field_name = mysql_field_name($result, $i);
$col_element = $doc->create_element($field_name);
$col_element = $row_element->append_child($col_element);
$text_node = $doc->create_text_node($row[$field_name]);
$col_element->append_child($text_node);
}
}
mysql_free_result($result);
mysql_close($connection);
return $doc->dump_mem(false);
}
}
class XmlTransformer
{
var $_parser;
var $_file;
var $_object = array();
var $_depth = 0;
var $_values = array();
var $obj;
var $_current;
function XmlTransformer($file)
{
$this->_file = $file;
$this->_parser = xml_parser_create();
}
function parse()
{
if (!($fp = fopen($this->_file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
$content .= $data;
}
xml_parser_set_option($this->_parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($this->_parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($this->_parser,$content,$this->_values);
xml_parser_free($this->_parser);
$this->makeObject();
}
function makeObject(){
$num = count($this->_values);
$levels = array();
$oldlevel = 0;
$this->_current = array();
for($i=0;$i<$num;$i++){
$tag = $this->_values[$i]["tag"];
$type = $this->_values[$i]["type"];
$level = $this->_values[$i]["level"];
$this->constructPath($tag,$level,$oldlevel);
if($type=="complete"){
$value = $this->_values[$i]["value"];
eval("\$this->obj".$this->typeElements()."='".$value."';\n");
}
$oldlevel = $level;
}
}
function typeElements(){
$result = "";
foreach($this->_current as $val){
$result .= "[\"".$val."\"]";
}
return $result;
}
function constructPath($tag,$level,$oldlevel){
if($level > $oldlevel){
array_push($this->_current,$tag);
}else{
$num = ($oldlevel - $level)+1;
for($i=0;$i<$num;$i++){
array_pop ($this->_current);
}
array_push($this->_current,$tag);
}
}
}
$xt = new XmlTransformer("config.xml");
$xt->parse();
print "<pre>";
print_r($xt);
print "</pre>";