paor
siječanj 2017 08:55 27
1
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; }
bozoou
siječanj 2017 10:00 27
2
$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)”. Konkretno se radi “Potrebna pomoć oko PHP petlje”
bozoou
siječanj 2017 10:17 27
3
I malo ugodnije rješenje:
foreach(array_slice($elements,-10) as $node)
{
...
}
1 Like
paor
siječanj 2017 16:30 27
4
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;
}
Pa napisi kako? Barem toliko da zahvalis na pruzenoj pomoci na forumu…
3 Likeova
paor
siječanj 2017 08:03 28
7
$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
aee
siječanj 2017 11:21 28
8
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
bozoou
siječanj 2017 11:38 28
9
Što nije bilo zadano 10 posljednjih rezultata, a ne prvih 10?
paor
siječanj 2017 21:37 29
10
jbg. nesporazum (“dali je čaša napola puna ili napola prazna”)
bozoou
siječanj 2017 22:53 29
11
Koliko misli mi je sada prošlo kroz glavu…ali reći ću samo nasmijano “hjooooooj” xd