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
Post a Comment