Автоматично взимане на Новина от Калдата ?

  • Автор Автор taxi
  • Начална дата Начална дата

taxi

Registered
По-надолу гледах темата на Slider и искам подобие ,но за главната ми страница.
Едитнах малко кода и стигнах до тук:

Код:
<?php
header("Content-type: text/html; charset=cp1251");
$xml = file_get_contents("http://www.kaldata.com/rosebud/rss.php?catid=3"); 
$explode = explode("<item>",$xml); 
foreach($explode as $part) { 
$part = explode("</item>","$part"); 
$part = $part[0]; 
$text = explode("<description>", $part); 
$text = explode("</description>", $text[1]); 
$text = $text[0];   
$texta = str_replace("<", "<", $text); 
$texta = str_replace(">", ">", $texta); 
}
echo $texta
?>


Ще може ли малко помощ да изважда най-горната новина ,защото в момента извежда предпоследната? :arrow:
 
Правиш едно поле id с auto increment и кагато ги извеждаш в заявката слагаш ORDER BY id
 
Опитай така
<?php
header('Content-type: text/html; Charset=UTF-8');
$link = 'http://www.kaldata.com/rosebud/rss.php?catid=3';

if(isset($_GET['xml']))
{
header("Content-type: text/xml");
die(file_get_contents($link));
}

$get = file_get_contents('http://localhost/test.php?xml=true');
$xml = simplexml_load_string($get);

$title = htmlspecialchars($xml -> channel -> item[0] -> title);
$pubDate = htmlspecialchars($xml -> channel -> item[0] -> pubDate);
$link = htmlspecialchars($xml -> channel -> item[0] -> link);
$description = htmlspecialchars($xml -> channel -> item[0] -> description);

printf('<strong>%s</strong><br />(%s)<br /><br />%s<br /><br />Източник: <a href="%s">%s</a>', $title, $pubDate, $description, $link, $link);
?>

Няма смисъл да го правиш с explode :)
Принципно може да стане и без да си създаваш собствен XML със съдържанието от kaldata.. На мен поне ми е по-удобно така, затова така го правя - ти ако искаш можеш да го махнеш.
 
Как да извеждам последната новина
,защото твоя код извежда същото като на Replace в по-долната тема на Slider.

Код:
<?php
header("Content-Type: text/html; charset=utf-8"); 
$xml = simplexml_load_file("http://www.kaldata.com/rosebud/rss.php?catid=3"); 
foreach ($xml->channel->item AS $rss) { 
echo '<h2>'.$rss->title.'</h2>'; 
echo '<p>'.$rss->description.'</p>'; 
}
?>

или оптимизация на извеждането в твоя код.
Не е от значение колко е голям кода ,а дали върши работа... :arrow:
 
Код:
<?php
header('Content-type: text/html; Charset=UTF-8');
$xml = simplexml_load_string(file_get_contents('http://www.kaldata.com/rosebud/rss.php?catid=3'));
$item = count($xml -> channel -> item)-1;
printf('<strong>%s</strong><br />(%s)<br /><br />%s<br /><br />Източник: <a href="%s">%s</a>', htmlspecialchars($xml -> channel -> item[$item] -> title), htmlspecialchars(htmlspecialchars($xml -> channel -> item[$item] -> pubDate)), htmlspecialchars(htmlspecialchars($xml -> channel -> item[$item] -> description)), htmlspecialchars($xml -> channel -> item[$item] -> link), htmlspecialchars($xml -> channel -> item[$item] -> link));
?>

От $item променливата си определяш коя точно новина искаш да "дръпнеш" :) В момента например има 30 новини - можеш да го направиш на $item = 0, за да взимаш последно добавената, или да го оставиш както е сега, за да взима последната (a.k.a. най-старата).
 

Back
Горе