mysql - How to add and changes XML tags in PHP -


i need of help, i'm working on php script create xml document encoding utf8 can generate xml file allow me save xml file in web host.

i want make xml output this:

<?xml version="1.0" encoding="utf-8" ?> <tv generator-info-name="www.mysite.com/xmltv"> <channel id="">    <display-name>information database</display-name>    <programme channel="information database" start="" stop="">        <title lang="en"></title>        <sub-title lang="en">        </sub-title>        <desc lang="en"></desc>        <category lang="en"></category>    </programme> </channel> 

here's xml output looks like:

<?xml version="1.0" encoding="utf-8"?> <tv generator-info-name="www.mysite.com/xmltv"><channel><display-name>information database</display-name><programme/><desc/></channel></tv> 

here's current code:

<?php  function db_connect() {   define('db_host', 'localhost');   define('db_user', 'myusername');   define('db_password', 'mypassword');   define('db_database', 'mydbname');    $errmsg_arr = array();   $errflag = false;   $link = mysql_connect(db_host, db_user, db_password);    if(!$link)    {     die('failed connect server: ' . mysql_error());   }    $db = mysql_select_db(db_database);   if(!$db)    {     die("unable select database");   } } db_connect();    function clean($var)   {     return mysql_real_escape_string(strip_tags($var));   }    $channels = clean($_get['channels']);   $id = clean($_get['id']);    if($errflag)    {     $_session['errmsg_arr'] = $errmsg_arr;     echo implode('<br />',$errmsg_arr);   }   else    {     $insert = array();      if(isset($_get['channels']))      {       $insert[] = 'channels = \'' . clean($_get['channels']) .'\'';     }     if(isset($_get['id']))      {       $insert[] = 'id = \'' . clean($_get['id']) . '\'';     }       if($channels && $id)      {       $qrytable1="select id, channels, links tvguide channels='$channels' && id='$id'";       $result1=mysql_query($qrytable1) or die('error:<br />' . $qry . '<br />' . mysql_error());       echo '<?xml version="1.0" encoding="utf-8" ?> <tv generator-info-name="www.mysite.com/xmltv"> <channel id="">    <display-name></display-name>    <programme channel="" start="" stop="">       <title lang="en"></title>       <sub-title lang="en"></sub-title>       <desc lang="en"></desc>       <category lang="en"></category>    </programme> </channel> </tv>';        while ($row = mysql_fetch_array($result1))       {        }       mysql_close();     }     else if(!$channels && ! $id)      {       $qrytable1="select id, channels, links, streams tvguide";       $result1=mysql_query($qrytable1) or die('error:<br />' . $qry . '<br />' . mysql_error());         while ($row = mysql_fetch_array($result1))        {        }       mysql_close();     }   }   // create dom document encoding utf8   $domtree = new domdocument('1.0', 'utf-8');    // create root element of xml tree   $tv = $domtree->createelement('tv');      //create attributes element     $generator_info_name = $domtree->createattribute('generator-info-name');     $generator_info_name->value = 'mysite.com/xmltv';     //append attribute     $tv->appendchild($generator_info_name);     // append element doc     $tv = $domtree->appendchild($tv);      //add channel child of root     $channel = $domtree->createelement('channel');     $channel_id = $domtree->createattribute('id');     $channel_id->value = '""';     $channel = $tv->appendchild($channel);          //append children channel         $channel->appendchild($domtree->createelement('display-name','information database'));         $channel->appendchild($domtree->createelement("programme"));         $channel->appendchild($domtree->createelement('desc'));      //finally, save file     echo $domtree->savexml();     $domtree->save('mychannel.xml'); ?> 

do know how can make same xml output first code?

and how can output each data mysql database put in each channel tag , want add tags under channel tag including display-name, programme-channel, title, sub-title, desc , category tags when output each data mysql?

edit: when try this, not rows mysql database put data in each xml tag channel other tags display-name, programme-channel, title, sub-title, desc , category.

here's source:

<?php  function db_connect() {   define('db_host', 'localhost');   define('db_user', 'mybox123');   define('db_password', 'f00tball');   define('db_database', 'mybox123_tvguide');    $errmsg_arr = array();   $errflag = false;   $link = mysql_connect(db_host, db_user, db_password);    if(!$link)    {     die('failed connect server: ' . mysql_error());   }    $db = mysql_select_db(db_database);   if(!$db)    {     die("unable select database");   } } db_connect();    function clean($var)   {     return mysql_real_escape_string(strip_tags($var));   }    $channels = clean($_get['channels']);   $id = clean($_get['id']);    if($errflag)    {     $_session['errmsg_arr'] = $errmsg_arr;     echo implode('<br />',$errmsg_arr);   }   else    {     $insert = array();      if(isset($_get['channels']))      {       $insert[] = 'channels = \'' . clean($_get['channels']) .'\'';     }     if(isset($_get['id']))      {       $insert[] = 'id = \'' . clean($_get['id']) . '\'';     }       if($channels && $id)      {       $qrytable1="select id, channels, links tvguide channels='$channels' && id='$id'";       $result1=mysql_query($qrytable1) or die('error:<br />' . $qry . '<br />' . mysql_error());         while ($row = mysql_fetch_array($result1))       {        }       mysql_close();     }     else if(!$channels && ! $id)      {       $qrytable1="select id, channels, links, streams tvguide";       $result1=mysql_query($qrytable1) or die('error:<br />' . $qry . '<br />' . mysql_error());       $xml = '<?xml version="1.0" encoding="utf-8"?>       <tv generator-info-name="www.mysite.com/xmltv"></tv>';        $my_xml = new simplexmlelement($xml);           while ($row = mysql_fetch_array($result1))       {           foreach($row $rows)          {           $channel = $my_xml->addchild('channel');           $channel->addattribute('id', '');            $channel->addchild('display-name', $row['channel']);            $programme = $channel->addchild('programme');           $programme->addattribute('channel', $row['channel']);           $programme->addattribute('start', $row['start']);           $programme->addattribute('stop', $row['stop']);             $title = $programme->addchild('title', $row['title']);           $title->addattribute('lang', 'en');            $sub_title = $programme->addchild('sub-title', $row['subtitle']);           $sub_title->addattribute('lang', 'en');            $desc = $programme->addchild('desc', $row['desc']);           $desc->addattribute('lang', 'en');            $category = $programme->addchild('category', $row['category']);           $category->addattribute('lang', 'en');          }       }       mysql_close();     }   }    // create dom document encoding utf8   $domtree = new domdocument($my_xml);   //finally, save file   echo $domtree->savexml();   $domtree->save('mychannel.xml'); ?> 

here's xml output:

<?xml version=""?> 

from code:

while ($row = mysql_fetch_array($result1))  

you should able array following information (or somethings similar):

$rows = array( array(     'channel' => 'channel1',     'start'   => 'start1',     'stop'   => 'stop1',             'title'  => 'title1',     'subtitle' => 'subtitle1',     'desc'    => 'desc1',     'category' => 'category1' ), array(     'channel' => 'channel2',     'start'   => 'start2',     'stop'   => 'stop2',             'title'  => 'title2',     'subtitle' => 'subtitle2',     'desc'    => 'desc2',     'category' => 'category2' ), ); 

for getting xml, use simplexmlelement. example below of how i'm getting following structure:

<?xml version="1.0" encoding="utf-8"?> <tv generator-info-name="www.mysite.com/xmltv"> <channel id="">     <display-name>channel1</display-name>     <programme channel="channel1" start="start1" stop="stop1">         <title lang="en">title1</title>         <sub-title lang="en">subtitle1</sub-title>         <desc lang="en">desc1</desc>         <category lang="en">category1</category>     </programme> </channel> <channel id="">     <display-name>channel2</display-name>     <programme channel="channel2" start="start2" stop="stop2">         <title lang="en">title2</title>         <sub-title lang="en">subtitle2</sub-title>         <desc lang="en">desc2</desc>         <category lang="en">category2</category>     </programme> </channel> 

<?php $xml = <<<xml <?xml version="1.0" encoding="utf-8"?><tv generator-info-name="www.mysite.com/xmltv"></tv> xml;  $my_xml = new simplexmlelement($xml);  foreach($rows $row) {     $channel = $my_xml->addchild('channel');     $channel->addattribute('id', '');      $channel->addchild('display-name', $row['channel']);      $programme = $channel->addchild('programme');     $programme->addattribute('channel', $row['channel']);     $programme->addattribute('start', $row['start']);     $programme->addattribute('stop', $row['stop']);       $title = $programme->addchild('title', $row['title']);     $title->addattribute('lang', 'en');      $sub_title = $programme->addchild('sub-title', $row['subtitle']);     $sub_title->addattribute('lang', 'en');      $desc = $programme->addchild('desc', $row['desc']);     $desc->addattribute('lang', 'en');      $category = $programme->addchild('category', $row['category']);     $category->addattribute('lang', 'en');   }  print_r($my_xml->asxml()); 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -