View Full Version : import XML file
Hamed
May 1st, 2007, 13:25
Hi all I code php that can import XML file to DB
xml.php
<?php
echo "<center>HamedOnLine</center><br />";
//connect to DB
mysql_connect("localhost", "root", "") or die(mysql_error());
echo "Connected to MySQL<br />";
mysql_select_db("mf") or die(mysql_error());
echo "Connected to Database";
//Theme
//Zaher1988
$file = "./theme.xml";
$data_array = array();
$data_index = "";
$data_array_counter = 0;
function startTree($parser, $name, $attrs)
{
global $data_array, $data_array_counter, $data_index;
switch($name)
{
case "TEMPLATE":
case "TEMPLATES":
$data_index = "";
break;
default:
$data_index = $name;
$data_array[$data_array_counter][$data_index] = "";
break;
}
}
function endTree($parser, $name)
{
global $data_array, $data_index, $data_array_counter;
switch($name)
{
case "TEMPLATE":
$data_array_counter++;
break;
}
$data_index = "";
}
function actualData($parser, $data)
{
global $data_array, $data_array_counter, $data_index;
if ($data_index != "")
{
$data_array[$data_array_counter][$data_index] .= trim($data);
}
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startTree", "endTree");
xml_set_character_data_handler($xml_parser, "actualData");
if (!($fp = fopen($file, "r")))
{
die("could not open XML.");
}
while ($data = fread($fp, 4096))
{
if (!xml_parse($xml_parser, $data, feof($fp)))
{
die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
for($i = 0;$i < count($data_array);$i++)
{
$sid = -2;
$time = time();
mysql_db_query("INSERT INTO `mybb_templates` ( `tid` , `title` , `template` , `sid` , `version` , `status` , `dateline` ) VALUES ('1', '2', '3', '4', '5', '6', '7')");
}
?>
and this is my XML file
<?xml version="1.0" encoding="ISO-8859-1"?>
<templates>
<template>
<name>something</name>
<codes><![CDATA[<div>hello</div>]]></codes>
<version>version</version>
</template>
<template>
<name>something</name>
<codes><![CDATA[<div>hello</div>]]></codes>
<version>version</version>
</template>
</templates>
who can help me about it??
this is my DB sql
CREATE TABLE `mybb_templates` (
`tid` int(10) unsigned NOT NULL auto_increment,
`title` varchar(120) collate latin1_general_ci NOT NULL default '',
`template` text collate latin1_general_ci NOT NULL,
`sid` int(10) NOT NULL default '0',
`version` varchar(20) collate latin1_general_ci NOT NULL default '0',
`status` varchar(10) collate latin1_general_ci NOT NULL default '',
`dateline` int(10) NOT NULL default '0',
PRIMARY KEY (`tid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
krakjoe
May 2nd, 2007, 03:40
well this is unfinished, that xml file you posted is incorrect, if you post the full one I'll help further....
<?php
class xml2sql
{
var $errno ;
var $errstr ;
var $handlex ;
var $xmldata ;
function xml2sql( $xml, $db )
{
if( !( $this->parser = xml_parser_create( ) ) ):
return $this->xmlerror( );
elseif( !xml_set_object( $this->parser, $this ) ):
return $this->xmlerror( );
elseif( !xml_set_element_handler( $this->parser, 'xmlStart', 'xmlEnd' ) ):
return $this->xmlerror( );
elseif( !xml_set_character_data_handler( $this->parser, 'xmlData' ) ):
return $this->xmlerror( );
elseif( !( $this->handlex = fopen( $xml, 'r' ) ) ):
return $this->error( sprintf( 'Cannot open %s for reading', $xml ) );
else:
while( $data = fread( $this->handlex, 4096 ) ):
xml_parse($this->parser, $data, feof( $this->handlex ) );
endwhile;
endif;
}
function xmlerror( )
{
$this->errno = xml_get_error_code( $this->parser ) ;
$this->errstr = sprintf(
'xml2sql::error on line %d : %s',
xml_get_current_line_number( $this->parser ),
xml_error_string( $this->errno )
);
}
function error( $error )
{
$this->errno = '000';
$this->errstr = $error ;
}
function xmlStart( $parser, $name, $attrs )
{
if( $this->insideitem ):
$this->tag = $name ;
elseif( $name == 'TEMPLATE' ):
$this->insideitem = true ;
endif;
}
function xmlEnd( $parser, $name )
{
if( $name == "TEMPLATE" )
{
mysql_query(
sprintf(
"INSERT INTO `mybb_templates` VALUES( '', '%s', '%s', 0, '%s', '%s', '%s' )",
trim( htmlspecialchars( $this->xmldata['name'] ) ),
trim( htmlspecialchars( $this->xmldata['codes'] ) ),
trim( htmlspecialchars( $this->xmldata['version'] ) ),
'Status',
time()
)
) or die( mysql_error( ) );
$this->xmldata = array( );
$this->insideitem = false;
}
}
function xmlData( $parser, $data )
{
if( $this->insideitem )
{
switch( $this->tag )
{
case "TEMPLATE":
$this->xmldata['template'] .= $data;
break;
case "VERSION":
$this->xmldata['version'] .= $data;
break;
case "NAME":
$this->xmldata['name'] .= $data;
break;
case "CODES":
$this->xmldata['codes'] .= $data;
break;
}
}
}
}
$db = mysql_connect( 'localhost', 'root', '' );
@mysql_select_db( 'mybb', $db );
$xml = new xml2sql( "xml.xml", $db );
echo "<pre>";
print_r( $xml );
echo $xml->errstr ;
Hamed
May 2nd, 2007, 09:47
I want to import MyBB templates into DB I think you can find the theme file in Mybboard.com/download.php
in mybb zip file :upload/install/resources/mybb_theme.xml
<templates>
<template name="forumdisplay_threadlist" version="122">
<![CDATA[ <div class="float_right" style="padding-bottom: 4px;">
{$newthread}
</div>
{$multipage}
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder" style="clear: both;" >
<tr>
<td class="thead" colspan="{$colspan}">
<div style="float: right;">
<span class="smalltext"><strong><a href="misc.php?action=markread&fid={$fid}">{$lang->markforum_read}</a> | <a href="usercp2.php?action=addsubscription&type=forum&fid={$fid}">{$lang->subscribe_forum}</a>{$clearstoredpass}</strong></span>
</div>
<div>
<strong>{$foruminfo['name']}</strong>
</div>
</td>
</tr>
<tr>
<td class="tcat" align="center" colspan="2"> </td>
<td class="tcat" align="center" width="40%"><span class="smalltext"><strong><a href="{$sorturl}&sortby=subject&order=asc">{$lang->thread}</a> {$orderarrow['subject']}</strong></span></td>
<td class="tcat" align="center" width="14%"><span class="smalltext"><strong><a href="{$sorturl}&sortby=starter&order=asc">{$lang->author}</a> {$orderarrow['starter']}</strong></span></td>
<td class="tcat" align="center" width="7%"><span class="smalltext"><strong><a href="{$sorturl}&sortby=replies&order=desc">{$lang->replies}</a> {$orderarrow['replies']}</strong></span></td>
<td class="tcat" align="center" width="7%"><span class="smalltext"><strong><a href="{$sorturl}&sortby=views&order=desc">{$lang->views}</a> {$orderarrow['views']}</strong></span></td>
{$ratingcol}
<td class="tcat" align="center" width="200"><span class="smalltext"><strong><a href="{$sorturl}&sortby=lastpost&order=desc">{$lang->lastpost}</a> {$orderarrow['lastpost']}</strong></span></td>
{$inlinemodcol}
</tr>
{$announcementlist}
{$threads}
<tr>
<td class="tfoot" align="right" colspan="{$colspan}">
<form action="forumdisplay.php" method="get">
<input type="hidden" name="fid" value="{$fid}" />
<select name="sortby">
<option value="subject" {$sortsel['subject']}>{$lang->sort_by_subject}</option>
<option value="lastpost" {$sortsel['lastpost']}>{$lang->sort_by_lastpost}</option>
<option value="starter" {$sortsel['starter']}>{$lang->sort_by_starter}</option>
<option value="started" {$sortsel['started']}>{$lang->sort_by_started}</option>
{$ratingsort}
<option value="replies" {$sortsel['replies']}>{$lang->sort_by_replies}</option>
<option value="views" {$sortsel['views']}>{$lang->sort_by_views}</option>
</select>
<select name="order">
<option value="asc" {$ordersel['asc']}>{$lang->sort_order_asc}</option>
<option value="desc" {$ordersel['desc']}>{$lang->sort_order_desc}</option>
</select>
<select name="datecut">
<option value="1" {$datecutsel['1']}>{$lang->datelimit_1day}</option>
<option value="5" {$datecutsel['5']}>{$lang->datelimit_5days}</option>
<option value="10" {$datecutsel['10']}>{$lang->datelimit_10days}</option>
<option value="20" {$datecutsel['20']}>{$lang->datelimit_20days}</option>
<option value="50" {$datecutsel['50']}>{$lang->datelimit_50days}</option>
<option value="75" {$datecutsel['75']}>{$lang->datelimit_75days}</option>
<option value="100" {$datecutsel['100']}>{$lang->datelimit_100days}</option>
<option value="365" {$datecutsel['365']}>{$lang->datelimit_lastyear}</option>
<option value="9999" {$datecutsel['9999']}>{$lang->datelimit_beginning}</option>
</select>
{$gobutton}
</form>
</td>
</tr>
</table>
<div class="float_right" style="padding-top: 4px;">
{$newthread}
</div>
{$multipage}
<br style="clear: both;" />
{$inlinemod}
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder" style="clear: both;" >
<tr>
<td class="trow1">
<table width="100%" border="0">
<tr>
<td>
<table cellspacing="0" cellpadding="2" style="white-space: nowrap; border: none">
<tr>
<td>
<img src="{$theme['imgdir']}/newfolder.gif" alt="{$lang->new_thread}" /> <span class="smalltext">{$lang->new_thread}</span><br />
<img src="{$theme['imgdir']}/newhotfolder.gif" alt="{$lang->new_hot_thread}" /> <span class="smalltext">{$lang->new_hot_thread}</span><br />
<img src="{$theme['imgdir']}/dot_folder.gif" alt="{$lang->posts_by_you}" /> <span class="smalltext">{$lang->posts_by_you}</span>
</td>
<td>
<img src="{$theme['imgdir']}/folder.gif" alt="{$lang->no_new_thread}" /> <span class="smalltext">{$lang->no_new_thread}</span><br />
<img src="{$theme['imgdir']}/hotfolder.gif" alt="{$lang->hot_thread}" /> <span class="smalltext">{$lang->hot_thread}</span><br />
<img src="{$theme['imgdir']}/lockfolder.gif" alt="{$lang->locked_thread}" /> <span class="smalltext">{$lang->locked_thread}</span>
</td>
</tr>
</table>
</td>
<td align="right">
{$searchforum}<br /><br />
{$forumjump}
</td>
</tr>
</table>
</td>
</tr>
</table>
{$inline_edit_js}
]]>
</template>
- <template name="forumdisplay_threadlist_sortrating" version="120">
- <![CDATA[ <option value="rating" {$sortsel['rating']}>{$lang->sort_by_rating}</option>
]]>
</template>
- <template name="global_boardclosed_warning" version="120">
- <![CDATA[ <br />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="trow1" align="center"><strong><font color="red">{$lang->bbclosed_warning}</font></strong></td>
</tr>
</table>
<br />
]]>
</template>
- <template name="post_savedraftbutton" version="120">
- <![CDATA[ <input type="submit" class="button" name="savedraft" value="{$lang->save_draft}" />
]]>
</template>
- <template name="index" version="120">
- <![CDATA[ <html>
<head>
<title>{$mybb->settings['bbname']}</title>
{$headerinclude}
</head>
<body>
{$header}
{$forums}
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<thead>
<tr>
<td class="thead">
<div class="expcolimage"><img src="{$theme['imgdir']}/collapse{$collapsedimg['boardstats']}.gif" id="boardstats_img" class="expander" alt="[-]" /></div>
<div><strong>{$lang->boardstats}</strong></div>
</td>
</tr>
</thead>
<tbody style="{$collapsed['boardstats_e']}" id="boardstats_e">
{$whosonline}
{$birthdays}
{$forumstats}
</tbody>
</table>
<br />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="trow1">
<table width="100%">
<tr>
<td>
<img src="{$theme['imgdir']}/on.gif" alt="{$lang->new_posts}" style="vertical-align: middle; padding-bottom: 4px;" /> <span class="smalltext">{$lang->new_posts}</span><br />
<img src="{$theme['imgdir']}/off.gif" alt="{$lang->no_new_posts}" style="vertical-align: middle; padding-bottom: 4px;" /> <span class="smalltext">{$lang->no_new_posts}</span><br />
<img src="{$theme['imgdir']}/offlock.gif" alt="{$lang->forum_locked}" style="vertical-align: middle;" /> <span class="smalltext">{$lang->forum_locked}</span>
</td>
<td style="vertical-align: top; text-align: right;"><span class="smalltext">{$logoutlink}<a href="misc.php?action=markread">{$lang->markread}</a> | <a href="showteam.php">{$lang->forumteam}</a> | <a href="stats.php">{$lang->forumstats}</a></span>
{$loginform}
</td>
</tr>
</table>
</td>
</tr>
</table>
{$footer}
</body>
</html>
]]>
</template>
Hamed
May 2nd, 2007, 09:51
and when I use you code I won't import anything that I want!
krakjoe
May 2nd, 2007, 11:18
the reason it doesnt work is because the xml you posted is nothing like the real thing.
Why not just install mybb somewhere quickly and export the data from phpma ? that'll take you 5 minutes
Hamed
May 2nd, 2007, 12:31
becasue I code a new multi forum for MyBB and if we can import XML file we can use muulti forum?
Can you help us about it?
krakjoe
May 2nd, 2007, 14:07
If you're good enough to code a multi forum then your good enough to do it yourself, or at the very least modify the code I did to work for the correct format......Im too busy tonight, if no one posts by tomorrow am I'll do it then .......
Hamed
May 2nd, 2007, 21:39
anyway Thanks but I found my worng code !
Hamed
May 3rd, 2007, 13:21
I really need your help I try to import XML code but I can not pls chek your PMs
Powered by vBulletin® Version 4.1.7 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.