Potrebna pomoć (xml)

Kako u navedeni code implementiratijoš jednu for petlju (ili nešto drugo) da mi vraća samo 10 posljednjih rezultata.

Hvala

foreach ($elements as $node) {

$links = $node->getElementsByTagName('link');
$datum = $node->getElementsByTagName('pubDate');
$naslov = $node->getElementsByTagName('title');
    
echo  $datlist[] = $datum->item(0)->nodeValue;
echo $linkslist[] = $links->item(0)->nodeValue;
echo $naslist[] = $naslov->item(0)->nodeValue;$node=null;  }
$y=count($elements);
for($x=$y-10;$x<$y;$x++)
   {
   $node = $elements[$x];
   ...
   }

za gornji primjer moraš biti siguran da postoji barem 10 elemenata u elements …ali sigurniji pristup je da pretpostaviš da neće uvijek biti 10 elemenata…onda ovako:

$y = count($elements) >=10 ? count($elements)-10 : 0;
for($x=$y;$x<count($elements);$x++)
    {
    $node = $elements[$x];
    ...
    }

P.S. oba primjera pretpostavljaju da se radi o numeric array…ako bi bila assoc array…onda drugi pristup, ali onda nema ni previše smisla dohvaćanje zadnjih 10.

P.S.2. Čemu xml u naslovu teme? Mogla je petlja popisivati i zadnjih deset auta na parkiralištu…pa nema smisla da naslovljavaš temu “potrebna pomoć (auti)”. :wink: Konkretno se radi “Potrebna pomoć oko PHP petlje”

I malo ugodnije rješenje: :slight_smile:

foreach(array_slice($elements,-10) as $node)
{
...
}
1 Like

Hvala

Nažalost ne radi ili ja ne radim nešto dobro.

Možda sam trebao biti jasniji

    <?php
$document_xml = new DOMDocument();
$document_xml->load('http://www.euractiv.com/sections/17497/all/rss/0');
$elements = $document_xml->getElementsByTagName('item');?>
<div class="sadrzaj"><h3>Euroactiv</h3><hr>

<?php
foreach ($elements as $node)
{
    $links = $node->getElementsByTagName('link');
    $datum = $node->getElementsByTagName('pubDate');
    $naslov = $node->getElementsByTagName('title');
    
echo $datlist[] = $datum->item(0)->nodeValue;?><br>
    <a href= <?php
echo $linkslist[] = $links->item(0)->nodeValue;?>
    > <?php
echo $naslist[] = $naslov->item(0)->nodeValue;
?>
</a><br><br>
<?php
$node=null;
}

riješeno

Pa napisi kako? Barem toliko da zahvalis na pruzenoj pomoci na forumu…

3 Likeova
$document_xml = new DOMDocument();
$document_xml->load('http://www.euractiv.com/sections/17497/all/rss/0');
$feed = array();?>
<div class="sadrzaj"><h3>Euroactiv</h3><hr>
<?php
foreach ($document_xml->getElementsByTagName('item') as $node) { 
	$item = array ( 
		'naslov' => $node->getElementsByTagName('title')->item(0)->nodeValue,
		'links' => $node->getElementsByTagName('link')->item(0)->nodeValue,
		'datum' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
		);
	array_push($feed, $item);
}

$limit = 10;

for($x=0;$x<$limit;$x++) {
	$naslov = $feed[$x]['naslov'];
	$links = $feed[$x]['links'];		
	$datum = date('d. m. Y.', strtotime($feed[$x]['datum']));
	
	echo '<span class='spand'>';echo $datum; echo '</span><br />';
	echo '<a href="'.$links.'" naslov="'.$naslov.'">'.$naslov.'</a><br /><br />';			
}
1 Like

Može i jednostavnije

foreach($document_xml->getElementsByTagName('item') as $i => $node ) {
	
	if($i == 10) break;
	
	printf('<span class="">%s</span><br />', date('d. m. Y.', strtotime($node->getElementsByTagName('pubDate')->item(0)->nodeValue)));
	
	printf('<a href="%1$s" naslov="%2$s">%2$s</a><br /><br />', $node->getElementsByTagName('link')->item(0)->nodeValue, $node->getElementsByTagName('title')->item(0)->nodeValue);

}
1 Like

Što nije bilo zadano 10 posljednjih rezultata, a ne prvih 10?

:joy:
jbg. nesporazum (“dali je čaša napola puna ili napola prazna”)

Koliko misli mi je sada prošlo kroz glavu…ali reći ću samo nasmijano “hjooooooj” xd