Pomoć oko skripte za čitanje XML sadržaja

Treba mi pomoć.
Dakle imam određeni xml file, recimo file.xml koji izgleda ovako:

<response>
    <performers>
        <performer>
            <performerid>performer1</performerid>
            <link>http://www.example.com/performers/performer1</link>
            <thumb>http://www.example/img/performer1.jpg</thumb>
        </performer>
        <performer>
            <performerid>performer2</performerid>
            <link>http://www.example.com/performers/performer2</link>
            <thumb>http://www.example/img/performer2.jpg</thumb>
        </performer>
        <performer>
            <performerid>performer3</performerid>
            <link>http://www.example.com/performers/performer3</link>
            <thumb>http://www.example/img/performer3.jpg</thumb>
        </performer>
    </performers>
</response>

I sada sam ja složio neki jednostavni php da mi pročita taj xml:

i jedan php da ispiše to šta želim:

tako da dobijem rezultat:

[HTML]performer1

[/HTML]

Pitanje za webmajstore: šta trebam dodati u php tako da mi ispiše sva 3 (ili više, ovisno o koliko ih ima u xml fajlu) performera, a ne samo prvi?
Dakle, želim da mi se prihaže slijedeći rezultat:

[HTML]performer1

performer2

performer3

[/HTML]

Vjerujem da je to za iskusne PHP programere lak zadatak.
Hvala unaprijed budućim pomagačima.

Otkada sam otkirio
http://simplepie.org/
prije par godina, nije mi više palo na pamet pisati bilo kakve XML parsere u PHP-u. Preporučam ga i tebi.

Eh ovako

<?php
foreach($xml->performers->performer as $performer)
{ //ako ovo ne uspije probaj ubaciti  $xml->performers u foreach
   $performerid = $performer->performerid; 
   $link = $performer->link; 
   $thumb = $performer->thumb; 

?>
   <a href="<?php echo $link; ?>"> 
   <?php 
    echo $performerid; ?></a> 
  
 
    <a href="<?php echo $link; ?>"><img src="<?php echo $thumb; ?>"></a>
<? php
}
?>

[quote=“CreatifCode”]Otkada sam otkirio
http://simplepie.org/
prije par godina, nije mi više palo na pamet pisati bilo kakve XML parsere u PHP-u. Preporučam ga i tebi.[/quote]

Hvala. Tako nešto tražim već danima…

Al sad ipak vidim da ne čita xml baš… Kada probam na demo, javlja mi:

A feed could not be found at
http://api

http://simplepie.org/wiki/faq/can_simplepie_parse_raw_xml_feeds

[quote=""]Can SimplePie parse raw XML feeds?

SimplePie is designed to specifically parse RSS and Atom feeds, not raw XML.
[/quote]

Fuck, to nisam nikada pročitao. :frowning: OK, da budemo na čisto nikad mi i nije trebalo za ništa drugo nego za parsiranje RSS feedova.

[quote=“nike”]Eh ovako

<?php
foreach($xml->performers->performer as $performer)
{ //ako ovo ne uspije probaj ubaciti  $xml->performers u foreach
   $performerid = $performer->performerid; 
   $link = $performer->link; 
   $thumb = $performer->thumb; 

?>
   <a href="<?php echo $link; ?>"> 
   <?php 
    echo $performerid; ?></a> 
  
 
    <a href="<?php echo $link; ?>"><img src="<?php echo $thumb; ?>"></a>
<? php
}
?>

[/quote]

Hvala ti. Probao sam nešto sa “foreach” al očito sam krivo radio… Tu ti nedostaje naravno prvi red koda $xml = simplexml_load_file(“file.xml”);
Ili sa čim da pozovem xml?
Jer možda foreach ne radi sa simplexml…
Trenutno nemam pristup serveru da to isprobam, kasnije poslijepodne javim ako radi.

Hehe ipak hvala.
Nije mi jasno da je tako teško naći xml parsere na netu, pa šta nitko to ne koristi?
Neznam niti šta točno tražiti.
Imam ja neke gotove skripte od kojih se može stvoriti cijela web stranica od jednig xml fajla, al to mi je prekomplicirano i ne mogu je editirat kako želim.

[quote=“Homer”]Hvala ti. Probao sam nešto sa “foreach” al očito sam krivo radio… Tu ti nedostaje naravno prvi red koda $xml = simplexml_load_file(“file.xml”);
Ili sa čim da pozovem xml?
Jer možda foreach ne radi sa simplexml…
Trenutno nemam pristup serveru da to isprobam, kasnije poslijepodne javim ako radi.[/quote]

Da ubaci $xml = simplexml_load_file(“file.xml”) prije foreach.

Simple xml je odlican izbor, naravno ako koristis php5.

[quote=“nike”]Da ubaci $xml = simplexml_load_file(“file.xml”) prije foreach.

Simple xml je odlican izbor, naravno ako koristis php5.[/quote]

Radi!!! Hvala ti puno na ovome! :zhuja:

Dodatno pitanjce: kako ograničiti broj rezultata (u ovom slučaju broj performera)? Naprimjer, xml file daje podatke od 10 performera, a ja želim da ih prikaže samo prva 3.

Hvala još jednom!


Ovako nekako bi bilo jedno od rješenja

Ovako nekako bi bilo jedno od rješenja

[quote=“Homer”]Radi!!! Hvala ti puno na ovome! :zhuja:

Dodatno pitanjce: kako ograničiti broj rezultata (u ovom slučaju broj performera)? Naprimjer, xml file daje podatke od 10 performera, a ja želim da ih prikaže samo prva 3.

Hvala još jednom![/quote]

Nema na cemu :smiley:

Uvijek sprema za pomoci.

Mozes uraditi kao sto je rekao @Zvijer, ali ja bi ovo slice prije foreach.

Drugo rjesenje je da napravis neku varijablu izvan foreach, kao $counter = 0, i da je povecavas kad god udje u jedan krug petlje.

Kad dostigne odredjen broj uradis break; i to je to.

Moguce da ovaj php foreach ima i ugradjen neki brojac, samo nisam siguran za to.

[quote=“Zvijer”]<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">foreach(</span><span class="syntaxdefault">array_slice</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$xml</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">performers</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">performer</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">)&nbsp;as&nbsp;</span><span class="syntaxdefault">$performer</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">kod<br /></span><span class="syntaxkeyword">}&nbsp;</span><span class="syntaxdefault"></span>

Ovako nekako bi bilo jedno od rješenja[/quote]

ne radi mi… javlja 2 greške:

Warning: array_slice() expects parameter 1 to be array, object given in /…/test7.php on line 3

Warning: Invalid argument supplied for foreach() in /…/test7.php on line 3

[quote=“nike”]Nema na cemu :smiley:

Uvijek sprema za pomoci.

Mozes uraditi kao sto je rekao @Zvijer, ali ja bi ovo slice prije foreach.

Drugo rjesenje je da napravis neku varijablu izvan foreach, kao $counter = 0, i da je povecavas kad god udje u jedan krug petlje.

Kad dostigne odredjen broj uradis break; i to je to.

Moguce da ovaj php foreach ima i ugradjen neki brojac, samo nisam siguran za to.[/quote]

probao sam staviti slice prije, ovako

al ni to ne radi. Parse error: syntax error, unexpected T_FOREACH, expecting ‘)’

nisam baš vješt sa php-om :neznam:
možeš mi napisati taj prvi red koda kako bi trebao izgledati?

[quote=“Homer”]probao sam staviti slice prije, ovako

al ni to ne radi. Parse error: syntax error, unexpected T_FOREACH, expecting ‘)’

nisam baš vješt sa php-om :neznam:
možeš mi napisati taj prvi red koda kako bi trebao izgledati?[/quote]

<?php
$performers_only_3 = array_slice($xml->performers->performer, 0, 3);

foreach($performers_only_3  as $performer)
{ 
   $performerid = $performer->performerid; 
   $link = $performer->link; 
   $thumb = $performer->thumb; 

?>
   <a href="<?php echo $link; ?>"> 
   <?php 
    echo $performerid; ?></a> 
  
 
    <a href="<?php echo $link; ?>"><img src="<?php echo $thumb; ?>"></a>
<? php
}
?>

eto :wink:

[quote=“nike”]

eto ;)[/quote]

ne radi :frowning:

Warning: array_slice() expects parameter 1 to be array, object given in /…/xml/test7.php on line 3

Warning: Invalid argument supplied for foreach() in /…/xml/test7.php on line 4

test7.php izgleda ovako:

A niš, onda uzmi break;

[quote=“eke777”]A niš, onda uzmi break;

Radi!!! Hvala! :zhuja:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja