Ive got a problem with my parser. Its for my guild for Anarchy Online. Basically, it takes the Guild Info published by the game as an XML document, parses the info into an array, and then sorts through my MySQL server to see if a member is in the database. If they arent, they get added to it, and if they are, there info just gets updated.
However, i cant quite get it to work too well. It gives me a Parse Error everytime i run it. I cant fogure it out, so im turning to the experts. Could somebody please look over this for me, tell me whats wrong?
Here is the script.
<?
$debug=1
function splicedata($sourcefile, $start, $end)
{
error_reporting(0);
$temp=split($start, $sourcefile);
$temp=split($end, $temp[1]);
error_reporting(1);
return $temp[0];
}
function splicemultidata($sourcefile, $start, $end)
{
error_reporting(0);
$targetdata = array();
$sourcedata = split($start, $sourcefile);
foreach ($sourcedata as $indsplit)
{
$target = split($end, $indsplit);
$targetdata[] = $target[0];
}
error_reporting(1);
return $targetdata;
}
$members=array();
$i=0;
$guildurl = "http://www.anarchy-online.com/org/stats/d/1/name/1306625/basicstats.xml";
if ($debug) echo "Downloading Current XML Data for 1306625 ...";
$guilddata="";
$connection2 = @fopen("$guildurl", "r");
if ($connection2)
{
while (!feof ($connection2))
{
$guilddata .= fgets ($connection2, 4096);
}
fclose($connection2);
}
if ($debug) echo "XML Download Complete.\n";
$lastupdated = splicedata($guilddata, "<last_updated>", "</last_updated>");
$guildname = splicedata($guilddata, "<name>", "</name>");
$guilddata = splicedata($guilddata, "<members>", "</members>");
if ($debug) echo "Processing Data For $guildname\n";
foreach (splicemultidata($guilddata, "<member>", "</member>") as $member)
{
if (splicedata($member,"<nickname>" ,"</nickname>" )!="")
{
$members[$i]['firstname' ]=splicedata($member,"<firstname>" ,"</firstname>" );
$members[$i]['nickname' ]=splicedata($member,"<nickname>" ,"</nickname>" );
$members[$i]['lastname' ]=splicedata($member,"<lastname>" ,"</lastname>" );
$members[$i]['rank' ]=splicedata($member,"<rank>" ,"</rank>" );
$members[$i]['prof' ]=splicedata($member,"<profession>" ,"</profession>");
$members[$i]['gender' ]=strtolower(splicedata($member,"<gender>","</gender>"));
$members[$i]['breed' ]=strtolower(splicedata($member,"<breed>" ,"</breed>"));
$members[$i]['photo_url' ]=splicedata($member,"<photo_url>" ,"</photo_url>" );
$i++;
}
}
$number_of_members=sizeof($members);
if ($debug) echo "$number_of_members Members Found\n";
if ($number_of_members>0)
{
if ($debug) echo "Executing New SQL Queries ...\n";
foreach ($members as $member)
{
$db_name = "database";
$connection = @mysql_connect ("localhost", "user", "pass") or die ('Cannot Connect to Database Server!');
$db = @mysql_select_db($db_name, $connection) or die("Cannot Find Database!.");
$namecheck = "SELECT * FROM users WHERE nickname=\"$member['nickname']\"";
$r = mysql_query($namecheck);
if(@mysql_num_rows($r) >= 1)
{
$sql = "UPDATE users SET rank = "\"$member['rank']\", date_updated = \"$date\" WHERE nickname = \"$member['nickname']\"";
$result = @mysql_query($sql,$connection) or die("Couldnt Execute UPDATE Query.");
} else {
$sql = "INSERT INTO users VALUES (\"$member['breed']\", \"$member['firstname']\", \"$member['breed']\",
\"$member['lastname']\", \"$member['nickname']\", \"$member['prof']\", \"$member['rank']\", 'nopass', 'military', \"$member['photo_url']\", \"$date\",
\"$date\")";
$result = @mysql_query($sql,$connection) or die("Couldnt Execute INSERT Query.");
}
}
}
if ($debug) echo "Finished Executing New SQL Queries.\n Database Update Completed.\n";
?>