07-06-2009, 12:03 AM
|
#10 (permalink)
|
|
The Wanderer
Join Date: Jul 2009
Posts: 10
Thanks: 1
|
i've already got one page that parses that same xml file but a diffrent part and the layout is the exact same with the criteria but that page doesn't have the error at all, but this one is and its really starting to annoying me now as quite a few people cant work it out either even thou theres very little diffrence within the 2 pages, i'll post my working script so u guys can compare and see if u can work it out too
PHP Code:
#!/usr/bin/php
<?php
// Include phpbb's config for db info
//include("config.php");
echo 'Working...' . '</br>';
/*
roster_gen class posted by D1g1talS0ul on elitistjerks.com
*/
class roster_gen {
const BROWSER="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070319 Firefox/2.0.0.3";
public $query;
public $server;
public $guild;
public $guildie;
public $page;
public function __construct ( $query, $server, $guild, $guildie, $page ) {
$this->query = $query;
$this->server = $server;
$this->guild = $guild;
$this->guildie = $guildie;
$this->page = $page;
} // end of __construct()
public function pull_xml() {
if( $this->query === 'roster' ) {
$url = 'http://eu.wowarmory.com/guild-info.xml?r=' . $this->server . '&n=' . $this->guild. '&p=' . $this->page;
} elseif( $this->query === 'character' ) {
$url = 'http://eu.wowarmory.com/character-sheet.xml?r=' . $this->server . '&n=' . $this->guildie;
} elseif( $this->query === 'achievements' ) {
$url = 'http://eu.wowarmory.com/character-achievements.xml?r=' . $this->server . '&cn=' . $this->guildie . '&gn=' .
$this->guild . '&c=168';
}
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt ($ch, CURLOPT_USERAGENT, roster_gen::BROWSER);
$url_string = curl_exec($ch);
return simplexml_load_string($url_string);
curl_close($ch);
} // end of pull_xml()
} // end class
$roster = new roster_gen ('roster', 'stormrage', 'heroes+of+warcraft', NULL, 1);
$xml_roster = $roster->pull_xml();
// Change to querying achievements
$roster->query='achievements';
// Set up the member array
$member_data = array();
$id = 0;
foreach ($xml_roster->guildInfo->guild->members->character as $char)
{
if ($char['level'] == 80 && $char['name'] != 'chiyome' ) {
$roster->guildie = $char['name'];
$xml_char = $roster->pull_xml();
$ach = find_category($xml_char->category);
$a = array();
$a[0] = check_achievement($ach, 0);
$a[1] = check_achievement($ach, 1);
$a[2] = check_achievement($ach, 2);
$a[3] = check_achievement($ach, 3);
$a[4] = check_achievement($ach, 4);
$a[5] = check_achievement($ach, 5);
$a[6] = check_achievement($ach, 6);
$a[7] = check_achievement($ach, 7);
$a[8] = check_achievement($ach, 8);
$a[9] = check_achievement($ach, 9);
$a[10] = check_achievement($ach, 10);
$a[11] = check_achievement($ach, 11);
$a[12] = check_achievement($ach, 12);
$a[13] = check_achievement($ach, 13);
$a[14] = check_achievement($ach, 14);
$member_data[$id] = array(
'name' => $char['name'],
'0' => $a[0],
'1' => $a[1],
'2' => $a[2],
'3' => $a[3],
'4' => $a[4],
'5' => $a[5],
'6' => $a[6],
'7' => $a[7],
'8' => $a[8],
'9' => $a[9],
'10' => $a[10],
'11' => $a[11],
'12' => $a[12],
'13' => $a[13],
'14' => $a[14]
);
// Provide some output that it's doing stuff
// echo 'Updated: <b>' . $char['name'] . '</b> ' . $a[0] . '-' . $a[1] . '-' . $a[2] . '-' . $a[3] . '-' . $a[4] . '-' . $a[5] . '-' . $a[6] . '-' . $a[7] . '-' . $a[8] . '-' . $a[9] . '-' . $a[10] . '-' . $a[11] . '-' . $a[12] . '-' . $a[13] . '-' . $a[14] . '</br>';
$id++;
}
}
/*
echo '</br>Inserting values into DB...</br>';
// Connect to the DB
$db = mysql_connect($dbhost, $dbuser, $dbpasswd);
$db_selected = mysql_select_db($dbname, $db);
foreach ($member_data as $member)
{
$name = $member['name'];
$sql = "insert into ach_data2(name, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
VALUES ('$name', '$member[0]', '$member[1]', '$member[2]', '$member[3]', '$member[4]', '$member[5]', '$member[6]', '$member[7]', '$member[8]', '$member[9]', '$member[10]', '$member[11]', '$member[12]', '$member[13]', '$member[14]')";
$result = mysql_query($sql);
if(!$result);
echo mysql_error() . "\n";
}
echo 'Database update completed.';
*/
function find_category($xml)
{
foreach($xml->achievement as $ach) {
if($ach['id'] == 1658)
return $ach;
}
}
function check_achievement($achievement, $num) {
if($achievement ['dateCompleted'] != NULL)
return 1;
else
if($achievement->criteria[$num]['date'] != NULL)
return 1;
else
return 0;
}
?>
this one works without a problem but the ones in my earlier posts don't 
|
|
|
|