I'm basicly having trouble displaying XML data scraped from an URL using cURL.
What the code should do:
Using Curl the code should "grab" the xml data from a specified URL.
It should then "navigate" to <SONGHISTORY><SONGS> where the two key pairs (PLAYEDAT & TITLE) are located.
From there it should allow me to output as many of the key pair results (up to 10) or as little (no lower than 1) as I need.
Eg 1 result would be -> 14:01 50 Cent - G-Unit and so on up to 10 results.
What the code is actually doing:
The code connects and grabs the data fine.
The problem is, it will only output one pair ie played and title.
What I have done and what I need:
With help, I have determined that the reason for this is because I am asigning all the results into one variable, therefore it will only echo out one set of results when called outside the class / function rather than the whole lot.
What I can't work out is how to remidy this.
I also need to work out how to define constant variables instead of using global.
I just don't understand the syntax
I have variables defined in a config file like, $host, $port, $password but the only way I can use them is by using global which I am told is wrong.
The Code:
This is the code Im having trouble with.
Firstly the way I summon my code (which is actually a part built class) and display the results I require in index.php
Some of the variables (as I said earlier) are taken from config.php
$simpleplaying = new simple();
$simpleplaying = $simpleplaying->simplestats();
if($error == 1)
{
echo '<div id="playing"><span class="status_red"> ' . $error_message1. '</span></div>';
}
else
{
echo '<div id="playing"><span class="title">Now Playing: </span><span class="text"> '.
$simple[6].'</span></div>'."n";
echo '<div id="listen_link">-<span class="text"><a href="'. $listen_link .'"
class="listen_link">Click To Listen</a></span></div>';
}
And lastly, the class code itself
class advanced {
function advancedstats()
{
date_default_timezone_set('Europe/London');
//Globals Required
global $host, $port, $admin_password, $error, $played, $title;
//Get Advanced Statistics
$advancedurl = "http://".$host.":".$port. "/admin.cgi?pass=".$admin_password.
"&mode=viewxml&page=0";
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => false, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "Mozilla/5.0", // who am i
CURLOPT_AUTOREFERER => false, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 2, // timeout on connect
CURLOPT_TIMEOUT => 2, // timeout on response
CURLOPT_MAXREDIRS => 0, // stop after 10 redirects
);
$ch = curl_init( $advancedurl );
curl_setopt_array( $ch, $options );
$advsts = curl_exec( $ch );
$err = curl_errno( $ch );
curl_close( $ch );
if(!$err)
{
$xml = new SimpleXmlElement($advsts);
$i=0;
foreach ($xml->xpath('///SONGHISTORY') as $songhistory)
{
foreach($songhistory->SONG as $songs)
{
$i++;
$songs->PLAYEDAT = date("G:i", (int) $songs->PLAYEDAT);
$played = $songs->PLAYEDAT;
$title = $songs->TITLE;
if($i >= $lastplayed)
break;
}
}
}
else
{
$error = 1;
}
}
}
Oh and the reason for this peice of code:
$songs->PLAYEDAT = date("G:i", (int) $songs->PLAYEDAT);
Is because the XML data (PLAYEDAT) comes in the form of a unix time stamp which requires "decoding" for want of a more accurate word.
Also thought I would add that the reason I made this a class is because I am going to be handeling the data it brings back and displaying it in lots of diferent ways, so it was suggested I used a class and pass the data to various functions within that class which would then handle it how I wanted it so I could display it how I wanted it. If that makes sense?
Thanks for looking guys, I hope someone knowledgable can lend a hand.
I've trawled google for hours but when you don't know the technical name for the problems you're having, it's hard finding solutions.
And some of the examples on the net are not much help if you can't work out how they apply to what you are trying to do when you are only a novice
Parse error: syntax error, unexpected $end in
hello,i receive the error :Parse error: syntax error, unexpected $end in C:\xampp\xampp\htdocs\helpdesk\users.php on line 372i looked allover the code but i can't find the curly bracket missing or
Quick Question about echo value
Hey guys, I'm trying to get something to show differently in one of my scripts. I'm trying to make it so that people that are a certain rank in my game will have their names show up bold in the users
jquery validation in codeIgniter
hai i need to add client side validation to my fiels which are selected in a forloop.the fields are auto incremented according to count.i need to add validation for a selected fields onlymy code is
help removing unwanted graphic
How do I remove the small elongated rectangular shape between the "Latest post" and "Archives" section at http://www.simonlindgren.com ?The code surrounding this place
remove trailing slash from array
I have the following array which contains trailing slashes I need to remove. What is the best way to accomplish this?Array ( [Field1] => A [Field2] => Test [Field3] =>
how to read and write into a word document using php...?
hi,I need,reading and writting into a word document using php.Thank u inadvance,Madhu
gather checkbox data from form into email
Hello all,First, i'd like to thank everyone who responded to my previous posts regarding setting up an SMTP server for my php form. I ended up figuring it out and my form is up and functioning,
How to search for several parameters from objects in a database?
I have a database with lots of information about objects.Now I would like to search for 4 or 5 parameters at the same time (from a form) like this:I choose from a select-box one parameter and then
array_count_values question?
ok i'm trying to create a top ten list from a database of listed favorite movies.the following code yields me the correct order and number of votes for each movie$compare = array_count_values
natcasesort works on one server but not on another
HiI have a problem that I was hoping that someone can help me with.I'm trying to use natcasesort() to sort an array. This works fine on my laptop (which I use for testing and which uses php 5.2.6),