mdexter Posted May 2, 2013 Share Posted May 2, 2013 Hello all, This is my very first post here and I hope someone could help me out on this as it has been a labour intensive time to try and learn all about this coding. I am trying to learn this coding using PHP and trying to do stuff myself and just through a lot of research.......I have found the holy grail of all XML feeds and this was the one feed that people who look to the main steam rankings for. Ok so I am very excited to share this with you guys and show you what I have done based on how you have educated me so far, please bear with me here:Ok the XML feed (the holy grail) is the GLOBAL USER RANKINGS, there is only one site using it now:www.aoe2stats.comThey are doing what I a trying to achieve and I think I am 95% there based on what you guys have taught me through the coding, ok so here it is, I hope I still have peoples attention here.here is the link to the XML FEED: http://steamcommunity.com/stats/AgeofEmpiresIIHDEdition/leaderboards/131879/?xml=1 Ok, this information I am trying to extract is the following: http://steamcommunity.com/stats/Ageo...l=1&start=5001]]></nextRequestURL><resultCount>5000</resultCount><entries><entry><steamid>76561198032048763</steamid><score>689</score><rank>1</rank><ugcid>-1</ugcid><details><![CDATA[ ]]></details></entry><entry><steamid>76561198011427258</steamid><score>632</score><rank>2</rank><ugcid>-1</ugcid><details><![CDATA[ ]]>___________________________________________________ Into a table with 4 columns, with the names on each column:Steam Name - Score - Rank - UgcidNow this is where I am learning also, I need to parse the (steamid)into the (community id) the steam id is the long number above and the community id is username on steam:website to show example: steamidfinder.comok I have found a script to parse the <steamid>76561198032048763</steamid>into the person name: Huehnerbeinas an example above, so I have been doing a lot of reaearching and I have found the following: _____________________________________________________________Assuming that your input steam_id is $INPUT and your final output array is stored in $OUTPUT, this is the functional for each approach that you could use to convert steam_id to personaname:/*** Convert steam_id to personaname* @returns STRING The name associated with the given steam_id* BOOL FALSE if no match was found*/function steamID_to_name($INPUT, $OUTPUT){// This gets the relevant part of the API response.$array = $OUTPUT['response']['players'];// Using your function to convert `steam_id` to a community ID$community_id = SteamID2CommunityID($INPUT);// Linear searchforeach ($array as $array_item){// If a match was found...if ($community_id == $array_item['steamid'])// Return the namereturn $array_item['personaname'];}// If no match was found, return FALSE.return false;}_________________________________________________________________So the conclusion is the script below, unfortunately is does not work but I have tried to change the neccesary parameters in the script, so the objective is: as what www.aoe2stats.com are the only ones who have done it!!To have the 4 entries in a 4 column table:Steam Name - Score - Rank - Ugcid and to have the steamid parse into the community_id or username.OK THE ACTUAL SCRIPT I HAVE MODIFIED, IT DOES NOT WORK BUT CAN YOU GUYS SHARE WITH ME WHAT MISTAKES I HAVE MADE SO I CAN GET THIS HOLY GRAIL SCRIPT WORKING, I HAVE SPENT HOURS ON THIS:SCRIPT BELOW:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<?phpheader("Cache-Control: no-cache, must-revalidate");header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); $sFeed = 'http://steamcommunity.com/stats/AgeofEmpiresIIHDEdition/leaderboards/131879/?xml=1' . microtime(true);/*** Convert steam_id to personaname* @returns STRING The name associated with the given steam_id* BOOL FALSE if no match was found*/function steamID_to_name($INPUT, $OUTPUT){// This gets the relevant part of the API response.$array = $OUTPUT['response']['players'];// Using your function to convert `steam_id` to a community ID$community_id = SteamID2CommunityID($INPUT);// Linear searchforeach ($array as $array_item){// If a match was found...if ($community_id == $array_item['steamid'])// Return the namereturn $array_item['personaname'];}// If no match was found, return FALSE.return false;}$dom = new DOMDocument('1.0', 'utf-8');$dom->load($sFeed);$steamid = $dom->getElementsByTagName('steamid');if ($entry->length > 0)$score = $dom->getElementsByTagName('score');if ($entry->length > 0)$rank = $dom->getElementsByTagName('rank');if ($entry->length > 0)$ugcid = $dom->getElementsByTagName('ugcid');if ($entry->length > 0){?><style>table, td, thbody {font-family:Verdana, Arial, Helvetica;font-size: 81%;margin: 0px;color: #5c3d0b;font-weight:bold;}{border:1px solid black;}th{background-color:e6cb9c;} </style><table border="1"><tr><th>NAME</th><th>SCORE</th><th>RANK</th><th>UGCID</th></tr><?foreach ($entry AS $entry){$steamid = $entry->getElementsByTagName('steamid')->item(0)->nodeValue;$score = $entry->getElementsByTagName('score')->item(0)->nodeValue;$rank = $entry->getElementsByTagName('rank')->item(0)->nodeValue;$ugcid = $entry->getElementsByTagName('ugcid')->item(0)->nodeValue;printf("<tr><td>%s</td><td>%s</td></tr>" . PHP_EOL, $name, $percent);}print('</table>');} ___________________________________________________________________OK PLEASE PLEASE GUYS WOULD LOVE TO SEE WHAT I HAVE DONE WRONG TO GET THIS SCRIPT WORKINGSO MANY THANKS!! Link to comment https://forums.phpfreaks.com/topic/277548-php-coding-for-xml-feed-to-parse-and-work/ Share on other sites More sharing options...
QuickOldCar Posted May 4, 2013 Share Posted May 4, 2013 Here you go. Change the $show_result_amount value to how many results you want. <style> table, td, th body { font-family:Verdana, Arial, Helvetica; font-size: 81%; margin: 0px; color: #5c3d0b; font-weight:bold; } { border:1px solid black; } th { background-color:e6cb9c; } </style> <?php $xml = simplexml_load_file('http://steamcommunity.com/stats/AgeofEmpiresIIHDEdition/leaderboards/131879/?xml=1'); //print_r($xml); $entries = $xml->entries->entry; $str = "http://steamcommunity.com/profiles/{{STEAMID64}}/?xml=1"; $count = 1; $show_result_amount = 10; echo "<table border='1' bordercolor='#FFCC00' style='background-color:#e6cb9c' width='100%' cellpadding='3'> <tr> <th colspan='4'> <h3><br>Steam Top Players</h3> </th> </tr> <th>Player Name</th> <th>Score</th> <th>Rank</th> <th>Ugcid</th>"; foreach( $entries as $key => $entry ) { $userURL = str_replace( "{{STEAMID64}}", $entry->steamid, $str ); $userXML = simplexml_load_string( file_get_contents( $userURL ) ); $username = $userXML->steamID; $score = $entry->score; $rank = $entry->rank; $ugcid = $entry->ugcid; echo "<tr><td>".$username."</td>"; echo "<td>".$score."</td>"; echo "<td>".$rank."</td>"; echo "<td>".$ugcid."</td></tr>"; $count++; if( $count > $show_result_amount ){break;} } echo "</table>"; ?> Link to comment https://forums.phpfreaks.com/topic/277548-php-coding-for-xml-feed-to-parse-and-work/#findComment-1428150 Share on other sites More sharing options...
Macsure Posted October 25, 2013 Share Posted October 25, 2013 Hi quick old car, I am in the same class as M dexter, I am learnng code and script too, Very new infact. I bring data off a game server, which is .xml, and I mangered to write a script to make it work get get the result I wanted , well Kinda I basically have 5 x rows and 2 Columns. But now I and trying to 5 columns Is there any chance of you helping me out. If so then I can post my code etc, Thanks in advance Macsure Link to comment https://forums.phpfreaks.com/topic/277548-php-coding-for-xml-feed-to-parse-and-work/#findComment-1455390 Share on other sites More sharing options...
Ch0cu3r Posted October 25, 2013 Share Posted October 25, 2013 @Macsure start a new thread for you question/problem. Your are welcome to post your code, please post within the tags Link to comment https://forums.phpfreaks.com/topic/277548-php-coding-for-xml-feed-to-parse-and-work/#findComment-1455393 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.