Jump to content

trying to learn but...


cowboysdude

Recommended Posts

Ok figured I'd go out and try to write me something for my site that I want and can't seem to be able to find what I want...sooooooooooo

 

I'm trying to create an NFL score 'ticker' and so far I've gotten as far as fetching the xml.. that part works LOL

 

I have been sitting here for a few hours trying to figure out how to do a foreach statement that works... I've hit a brick wall because I just can't seem to figure it out...

 

I have even tried a few I've found in other places but no go...

 

Here is what I have so far:

<?php

$url="http://www.nfl.com/liveupdate/scorestrip/postseason/ss.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);    // get the url contents

$data = curl_exec($ch); // execute curl request
curl_close($ch);

$xml = simplexml_load_string($data);
print_r($xml);  //just keeping this here so I can see it for now

?>

I know that part is working as you can see I left the print_r in it temp so I can still see I"m getting what I need...

 

Again the problem is I'm not getting a functional foreach that I can get to work.. I either get nothing back or an error of some kind and trust me I've tried as many as I could find LOL


SimpleXMLElement Object
(
    [gms] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [w] => 18
                    [y] => 2014
                    [t] => POST
                    [gd] => 0
                    [bf] => 0
                    [bph] => 0
                )

            [g] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015010301
                                    [gsis] => 56492
                                    [d] => Sat
                                    [t] => 8:15
                                    [q] => P
                                    [htn] => Pittsburgh Steelers
                                    [hnn] => steelers
                                    [h] => PIT
                                    [hs] => 0
                                    [vtn] => Baltimore Ravens
                                    [vnn] => ravens
                                    [v] => BAL
                                    [vs] => 0
                                    [n] => NBC
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 1
                                    [gt] => WC
                                )

                        )

                    [1] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015010400
                                    [gsis] => 56493
                                    [d] => Sun
                                    [t] => 1:05
                                    [q] => P
                                    [htn] => Indianapolis Colts
                                    [hnn] => colts
                                    [h] => IND
                                    [hs] => 0
                                    [vtn] => Cincinnati Bengals
                                    [vnn] => bengals
                                    [v] => CIN
                                    [vs] => 0
                                    [n] => CBS
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 2
                                    [gt] => WC
                                )

                        )

                    [2] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015011000
                                    [gsis] => 0
                                    [d] => Jan 10
                                    [t] => 4:35
                                    [q] => P
                                    [htn] => New England Patriots
                                    [hnn] => patriots
                                    [h] => NE
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => NBC
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 3
                                    [gt] => DIV
                                )

                        )

                    [3] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015011101
                                    [gsis] => 0
                                    [d] => Jan 11
                                    [t] => 4:40
                                    [q] => P
                                    [htn] => Denver Broncos
                                    [hnn] => broncos
                                    [h] => DEN
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => CBS
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 4
                                    [gt] => DIV
                                )

                        )

                    [4] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015011801
                                    [gsis] => 0
                                    [d] => Jan 18
                                    [t] => 6:40
                                    [q] => P
                                    [hnn] => 
                                    [h] => TBD
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => CBS
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 5
                                    [gt] => CON
                                )

                        )

                    [5] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015011800
                                    [gsis] => 0
                                    [d] => Jan 18
                                    [t] => 3:05
                                    [q] => P
                                    [hnn] => 
                                    [h] => TBD
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => FOX
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 6
                                    [gt] => CON
                                )

                        )

                    [6] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015011100
                                    [gsis] => 0
                                    [d] => Jan 11
                                    [t] => 1:05
                                    [q] => P
                                    [htn] => Green Bay Packers
                                    [hnn] => packers
                                    [h] => GB
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => FOX
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 7
                                    [gt] => DIV
                                )

                        )

                    [7] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015011001
                                    [gsis] => 0
                                    [d] => Jan 10
                                    [t] => 8:15
                                    [q] => P
                                    [htn] => Seattle Seahawks
                                    [hnn] => seahawks
                                    [h] => SEA
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => FOX
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 8
                                    [gt] => DIV
                                )

                        )

                    [8] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015010401
                                    [gsis] => 56494
                                    [d] => Sun
                                    [t] => 4:40
                                    [q] => P
                                    [htn] => Dallas Cowboys
                                    [hnn] => cowboys
                                    [h] => DAL
                                    [hs] => 0
                                    [vtn] => Detroit Lions
                                    [vnn] => lions
                                    [v] => DET
                                    [vs] => 0
                                    [n] => FOX
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 9
                                    [gt] => WC
                                )

                        )

                    [9] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015010300
                                    [gsis] => 56491
                                    [d] => Sat
                                    [t] => 4:35
                                    [q] => P
                                    [htn] => Carolina Panthers
                                    [hnn] => panthers
                                    [h] => CAR
                                    [hs] => 0
                                    [vtn] => Arizona Cardinals
                                    [vnn] => cardinals
                                    [v] => ARI
                                    [vs] => 0
                                    [n] => ESPN
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 10
                                    [gt] => WC
                                )

                        )

                    [10] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015012500
                                    [gsis] => 0
                                    [d] => Jan 25
                                    [t] => 8:00
                                    [q] => P
                                    [htn] => Team Cris Carter
                                    [hnn] => team carter
                                    [h] => CRT
                                    [hs] => 0
                                    [vtn] => Team Michael Irvin
                                    [vnn] => team irvin
                                    [v] => IRV
                                    [vs] => 0
                                    [n] => ESPN
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 11
                                    [gt] => PRO
                                )

                        )

                    [11] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015020100
                                    [gsis] => 0
                                    [d] => Feb 1
                                    [t] => 6:30
                                    [q] => P
                                    [hnn] => 
                                    [h] => TBD
                                    [hs] => 0
                                    [vnn] => 
                                    [v] => TBD
                                    [vs] => 0
                                    [n] => NBC
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 12
                                    [gt] => SB
                                )

                        )

                )

        )

    [gds] => SimpleXMLElement Object
        (
        )

)






My object is returning this and that's great... but my foreach skills need a TON of work apparently... 

 

I think I've looked at it too much and too long... some suggestions would be VERY much appreciated...  Probably a bit big of a project to try on my first real attempt but I just went through the foreach in my tutorial but it's just not working....

 

What I'm looking to do is output the d, t, htn, vtn, hs, vs... 

 

I was trying to just get it to show just one of those but no go...

 

Thanks everyone!!

Link to comment
https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/
Share on other sites

You should spend some time learning to read dumps like this.

 

SimpleXMLElement Object
(
$xml is a SimpleXMLElement object

[gms] => SimpleXMLElement Object
with a "gms" child

[g] => Array
which itself has a "g" child that is an array

[0] => SimpleXMLElement Object
of more SimpleXMLElement objects

[@attributes] => Array
and each element in the array has attributes

[eid] => 2015010301
such as "eid".

 

foreach ($xml->gms->g as $g) {
    echo (string)$g["eid"];
Link to comment
https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501511
Share on other sites

Thank you very much I will try that ... I was coming back to say this is what I have so far....


foreach($xml->gms->g as $games){
    echo "Matchup:".$games->htn->hs->vtn->vs->d->t;
}

But I'm not returning anything ... so I like your explanation Thank you for taking the time to tell me.  I will be going over today and buying a course book in addition to the online course I am taking... find this all VERY interesting and I like it!    SO on my first line I was on the right track... that makes me very happy!!!  

 

Again your explanation is VERY clear and I think I should be able to move forward again!  

 

Thank you so very much!!!  

Link to comment
https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501543
Share on other sites

Horning in on requinex's very helpful reply I offer this in case she doesn't respond soon:

 

foreach($xml->gms->g as $games)
{
    echo "Matchup:".$games['htn']," ",$games['hs']," vaersus ",$games['vtn']]," ",$games['vs']," on ",$games['d']," at ",$games['t'],"<br>";
}
Link to comment
https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501545
Share on other sites

ginerjm is correct.

 

$games is itself the

                    [0] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [eid] => 2015010301
                                    [gsis] => 56492
                                    [d] => Sat
                                    [t] => 8:15
                                    [q] => P
                                    [htn] => Pittsburgh Steelers
                                    [hnn] => steelers
                                    [h] => PIT
                                    [hs] => 0
                                    [vtn] => Baltimore Ravens
                                    [vnn] => ravens
                                    [v] => BAL
                                    [vs] => 0
                                    [n] => NBC
                                    [rz] => 0
                                    [ga] => 
                                    [o] => 1
                                    [gt] => WC
                                )
 
                        )
part of the dump. htn and hs and vtn are all "attributes" of $games, and you access each one individually with array syntax ($games['htn'], etc).

<g htn="" hs="" vtn="" />
For ->htn->hs->vtn to work, htn would have to be a child of $games, hs a child of htn, vtn a child of hs, and so on.

<g>
    <htn>
        <hs>
            <vtn />
        </hs>
    </htn>
</g>
[edit] Casting to string, as with the (string)$g["eid"] in my earlier reply, is because those values are actually SimpleXMLElement objects. Not strings. They can become strings easily with a cast or when a function tries to treat the value as a string.

echo is the latter case. You can echo those values without problems not because they are strings but because each SimpleXMLElement object is being automatically converted to a string.

echo gettype($games["htn"]); // object
Keep that in mind because it trips people up when suddenly PHP complains that a value they thought was a string was actually an object the whole time.
Link to comment
https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501555
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.