Merhaba arkdaşlar. Bir fonksiyon hazırladım. Çalışıyor ama tam olarak düşündüğüm gerçekleşmiyor.
Bu bir RSS'den bilgi alma fonksiyonu. Kısaca şunları yapmaya çalışıyorum:
1. birden fazla (10-15 tane felan) rss i dizi içine alıp,
2. dizideki toplam rss sayısını buluyor ve alınan bu sayı kadar her bir rss URLsinden gelen verilerdeki (xml'den) title ve link elementlerini bulup,
3. Eğer bu verilerden link verilerinin aynısı veri tabanında varsa kaydetme, yoksa kaydet.
Ama şu şekilde sorunlu.
1. tüm verileri çekip
sadece en son rss URLsindeki verilerin veritabanında olup olmadığını kontrol ediyor, önceki 9 url den gelen veri veritabanında olmasada pass geçip kaydetmiyor.
2. Gelen verilerin veritabanında olup olmadığını yanlış test ettiğimi düşünüyorum
Bu fonksiyonu doğru yazmama yardımcı olursanız çok sevinirim. Anladığım kadarıyla bir işlem kontrolü gibi bişi olması lazım.
Yaptığım kod altta:
function rss_getir()
{
global $option;
$config =& JComponentHelper::getParams( 'com_bilesenadi' );
$load_rss_url = $config->get( 'load_rss_url' );
$divided_rss_names = explode(',',$load_rss_url);
$rss_quantity = count($divided_rss_names);
$doc = new DOMDocument();
for($i=0; $i<$rss_quantity; $i++)
{
$doc->load( 'http://www.siteadi.com/rss/'.$divided_rss_names[$i].'.html' );
$items = $doc->getElementsByTagName( "item" );
foreach( $items as $item )
{
$titles = $item->getElementsByTagName( "title" );
$links = $item->getElementsByTagName( "link" );
$ex_title = substr($titles->item(0)->nodeValue,0,4);
$title = explode($ex_title,$titles->item(0)->nodeValue);
$links = trim($links->item(0)->nodeValue);
$like = mysql_query("SELECT url FROM tablo WHERE url LIKE '%$links%' ");
while ($row = mysql_fetch_assoc($like))
{
$aa = $like;
}
if ( empty($aa) )
{
$sql = "INSERT INTO tablo VALUES ('','$title[1]', '$links', '1')";
@mysql_query($sql);
}
}
}
$this->setRedirect( 'index.php?option=' . $option );
}