NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: XML to PHP -> 50 tisic dat.

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
katrincsak
Člen
Avatar
katrincsak:28.7.2015 3:29

Zdravím,

lámu si s tímto hlavu již několik hodin a nevím si rady.

Chci převést pro kamaráda jeden XML soubor sazky, ale ať se snažím jak se snažím nemohu vymyslet cyklus, nebo něco co by vysypalo všechny data. Vysype to jen malou část a to v podstatě jen to co se mění díky cyklu for.

Výsledně to udělá něco jako kod níže. Jenže potřebuji logicky dosazovat i za nuly další cykly. Nebo něco co to vyřeší :(

$xml->supersport[$CYKLUS]->sport[0]->competition[0]->match[0]->event[0]->opportunity[0]

Nejlépe funkční je toto, ale řeší jen 10% toho co potřebuji...

XML soubor: http://ban.tipsport.cz/f/oddsFeed.xml

Děkuji za pomoc :(

 
Odpovědět
28.7.2015 3:29
Avatar
katrincsak
Člen
Avatar
katrincsak:28.7.2015 10:41

Zapomněl jsem jen vložit do pastebinu.

$xml = simplexml_load_file(”http://ban.tipsport.cz/f/oddsFeed.xml”);
 
Nahoru Odpovědět
28.7.2015 10:41
Avatar
katrincsak
Člen
Avatar
katrincsak:29.7.2015 1:12

Tak jsem na to na konec přišel...Brutalita :D ...aktuálně skoro 300 tisíc dat (Podle aktualizace Tipsportu cca každých 20 minut.)

  • Script je docela dlouhý a dost tabovaný kvůli přehlednosti. Nahrál jsem i fotku k tomu.

Funguje to na principu

$xml->supersport[$CYKLUS]->sport[0]->competition[0]->match[0]->event[0]->opportunity[0]

Snad to třeba někomu pomůže, každopádně rád vysvětlím, pakliže někdo bude chtít.
(Ještě budu nahrávat do MySQL)

<?php
/*
- supersport (name)
- sport (name)
- competition (id, name, annualName, url)
- match (id, matchId, name, dateClosed, url)
- event (name, eventType, eventTypeDescription)
- opportunity (number, type, typeName, shortName, fullName)
*/

$xml=simplexml_load_file("http://ban.tipsport.cz/f/oddsFeed.xml");


$super_c = count($xml->supersport);

for($super=0; $super < $super_c; $super++)
{
        $opport_c = count($xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[0]->opportunity);

        echo "<br><font color='red'>".$xml->supersport[$super]['name']."</font>";$x++;

        $sport_c = count($xml->supersport[$super]->sport);
                for($sport=0; $sport < $sport_c; $sport++)
                {
                        echo "<br>".$xml->supersport[$super]->sport[$sport]['name'];$x++;
                        $compet_c = count($xml->supersport[$super]->sport[$sport]->competition);

                 for($compet=0; $compet < $compet_c; $compet++)
                 {
                        echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]['name'];$x++;

                                        $match_c = count($xml->supersport[$super]->sport[$sport]->competition[$compet]->match);
                                                for($match=0; $match < $match_c; $match++)
                                                {
                                                        echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]['id'];$x++;
                                                        echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]['matchId'];$x++;
                                                        echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]['name'];$x++;
                                                        echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]['dateClosed'];$x++;
                                                        echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]['url'];$x++;

                                                                $event_c = count($xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event);
                                                                        for($event=0; $event < $event_c; $event++)
                                                                        {
                                                                                echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]['name'];$x++;
                                                                                echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]['eventType'];$x++;
                                                                                echo "<br>".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]['eventTypeDescription'];$x++;

                                                                                $opport_c = count($xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]->opportunity);
                                                                                        for($opport=0; $opport < $opport_c; $opport++)
                                                                                        {
                                                                                                echo "<br> ".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]->opportunity[$opport]['number'];$x++;
                                                                                                echo "<br> ".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]->opportunity[$opport]['type'];$x++;
                                                                                                echo "<br> ".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]->opportunity[$opport]['typeName'];$x++;
                                                                                                echo "<br> ".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]->opportunity[$opport]['shortName'];$x++;
                                                                                                echo "<br> ".$xml->supersport[$super]->sport[$sport]->competition[$compet]->match[$match]->event[$event]->opportunity[$opport]['fullName'];$x++;
                                                                                        }
                                                                        }
                                                }
                                }
                }
}
?>
 
Nahoru Odpovědět
+1
29.7.2015 1:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.