phpKF - php Kolay Forum     
Hakkında  |  Sürümler  |  indirme  |  Telif  |  Kurulum  |  Tema  |  Eklenti  |  Mod  |  Ekip  ]
Forum  |  Portal  |  Yardım  |  Üyeler  |  Arama  |  Giriş  |  Kayıt
 
Forum Ana Sayfası  »  phpKF MOD - Ek Özellik Bölümü  »  Yeni Özellik
 »  Rss haber çekme ve veritabanına kayıt..

Yeni Başlık  Cevap Yaz
Toplam 3 Sayfa:   [1]   2   3   >   son» 
Rss haber çekme ve veritabanına kayıt..           (gösterim sayısı: 5.431)
Yazan Konu içeriği

boşluk

esoyun
[Hakan]

Kayıt Tarihi: 05.07.2008
İleti Sayısı: 36
Şehir: Eskişehir
Durum: Forumda Değil

E-Posta Gönder
Web Adresi
Özel ileti Gönder

Konu Tarihi: 10.02.2009- 17:41
Alıntı yaparak cevapla  


Kodlar biraz aceleye geldi, üzerinde çalışılırsa daha işlevsel birşeyler ortaya çıkar. :)

Alttaki kodları kopyalayın ve haberekle.php (veya istediğiniz başka bir isimde) isimli bir dosya yaratın ve içerisine yapıştırın.

Sonra düzenlenmesi gereken yerleri kendinize göre düzenleyin.

$forum_id : Bu değişken ile rss ile gelen verilerin hangi foruma kayıt edileceği ayarlanır.

$kackayit : Değişkeni ile, rss den gelen verilerin kaç tanesinin veritabanına işleneceği seçilir.

$poster : Bu değişken, rss verilerini foruma postalayan kişinin kullanıcı adını içerir.Ben forumumda "Haberci" diye bir kullanıcı açtım ve bu haberleri haberci gönderiyormuş gibi ayarladım.

$file : Bu alan, bizim rss haberleri çekeceğimiz adresin yazılacağı yer.İnteretten daha fazla rss adresi temin edebilirsiniz.


Bütün değişiklikleri kendinize göre ayarladıktan sonra,
Oluşturduğunuz dosyayı forumun anadizinine koyun ve tarayıcınızın adres satırından çağırıp çalıştırın.

Bunu isterseniz dahada geliştirip yönetim sayfalarına ekleyebilir, cron olarak belli aralıklarla çalıştırtabilirsiniz.Baştada dediğim gibi, üzerinde biraz daha uğraşılırsa, güzel şeyler ortaya çıkacaktır.

Bu kodla ilgili sormak istediğiniz veya anlayamadığınız konular olursa seve seve yardım etmeye çalışırım.

Kolay gelsin. :)



 Kod Çizelgesi     Dil Seçin: Hepsini Seç
<?php
$phpkf_ayar = 'ayar.php';
include $phpkf_ayar;
set_time_limit(0);

//Aynı haberleri tekrar tekrar ekletmemek için, konu başlığı kontrolü yapılmaktadır.
//Daha farklı kontrollerde eklenebilir.

$file = "http://www.cnnturk.com/servisler/rss/spor.rss"; //RSS haber çekeceğimiz sitenin adresi..
$kackayit = 15;	//Toplam kaç kayıt girilecek..
$forum_id = 291; //post gönderilecek forumun id numarası..
$poster ='Haberci'; //Foruma bu konuları açan kişinin kullanıcı adı..


$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;
function startElement($parser, $name, $attrs) {
    global $rss_channel, $currently_writing, $main;
    switch($name) {
     case "RSS":
     case "RDF:RDF":
     case "ITEMS":
      $currently_writing = "";
      break;
     case "CHANNEL":
      $main = "CHANNEL";
      break;
     case "IMAGE":
      $main = "IMAGE";
      $rss_channel["IMAGE"] = array();
      break;
     case "ITEM":
      $main = "ITEMS";
      break;
     default:
      $currently_writing = $name;
      break;
    }
}
function endElement($parser, $name) {
    global $rss_channel, $currently_writing, $item_counter;
    $currently_writing = "";
    if ($name == "ITEM") {
     $item_counter++;
    }
}
function characterData($parser, $data) {
 global $rss_channel, $currently_writing, $main, $item_counter;
 if ($currently_writing != "") {
  switch($main) {
   case "CHANNEL":
    if (isset($rss_channel[$currently_writing])) {
     $rss_channel[$currently_writing] .= $data;
    } else {
     $rss_channel[$currently_writing] = $data;
    }
    break;
   case "IMAGE":
    if (isset($rss_channel[$main][$currently_writing])) {
     $rss_channel[$main][$currently_writing] .= $data;
    } else {
     $rss_channel[$main][$currently_writing] = $data;
    }
    break;
   case "ITEMS":
    if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
     $rss_channel[$main][$item_counter][$currently_writing] .= $data;
    } else {
     //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
     $rss_channel[$main][$item_counter][$currently_writing] = $data;
    }
    break;
  }
 }
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
 die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
 if (!xml_parse($xml_parser, $data, feof($fp))) {
  die(sprintf("XML error: %s at line %d",
     xml_error_string(xml_get_error_code($xml_parser)),
     xml_get_current_line_number($xml_parser)));
 }
}
xml_parser_free($xml_parser);


//mysql_db_query($cfgdbisim,"SET NAMES utf8") or die ('<h2>sorgu başarısız</h2>'.mysql_error());


//Rss haber çekerken hep Türkçe karakter problemi yaşanır.Bu problemi çözmek için bir fonksiyon.Dahada geliştirilebilinir..
function trtrans ($str)  {
$trans = array(
"ı" => "&#253;",
"İ" => "&#221;",
"ğ" => "&#240;",
"Ğ" => "&#208;",
"ş" => "&#222;" );

$out = strtr($str, $trans); 

/*
$badwordchars=array(
"\xe2\x80\x98","\xe2\x80\x99","\xe2\x80\x9a",
"\xe2\x80\x9b","\xe2\x80\xb2","\xe2\x80\xb5",
"\xe2\x80\x9c","\xe2\x80\x9d","\xe2\x80\x9e",
"\xe2\x80\x9f","\xe2\x80\xb3","\xe2\x80\xb6",
"\xe2\x80\xa6","\xe2\x82\xac","\xe2\x86\x92",
"\xe2\x86\x90","\xe2\x86\x91","\xe2\x86\x93",
"\xe2\x80\x94"
);
$fixedwordchars=array(
"‘","’","‚",
"&#8219;","&#8242;","&#8245;",
"“","”","„",
"&#8223;","&#8243;","&#8246;",
"…","€","&#8594;",
"&#8592;","&#8593;","&#8595;",
"&mdash;"
);
$out=str_replace($badwordchars,$fixedwordchars,$out);
*/

$out = mb_convert_encoding($out,"ISO-8859-9","UTF-8");
return $out;
}


$rakam = 0; //Veri tabanına kaç kayıt girildiğini saymak için.. 

for($i=0; $i < $kackayit; $i++) { //Toplam girilecek kayıt sayısı kadar döngü başlıyor..

$tarih = time();
$satir_messages['subject'] = substr($rss_channel["ITEMS"][$i]["TITLE"], 0, 59);
$satir_messages['subject'] = trtrans(str_replace("'","-",$satir_messages['subject']));
$satir_messages['body'] = substr($rss_channel["ITEMS"][$i]["DESCRIPTION"], 0, 65534);
$satir_messages['body'] = trtrans(str_replace("'","-",$satir_messages['body']));
$satir_messages['body'] = '<p>'.$satir_messages['body'].'</p>'.$rss_channel['TITLE'].'<p><a href=\"' .$rss_channel["ITEMS"][$i]["LINK"]. '\">Devamini Oku</a></p>';
$kontrol1 = $satir_messages['subject'];

//Veritabanına kayıt girilmeden evvel, daha önce aynı konu başlığı ile giriş yapılmışmı ona bakılıyor...
$strSQLx = "SELECT * FROM $tablo_mesajlar WHERE mesaj_baslik = '$kontrol1' AND hangi_forumdan = '$forum_id' LIMIT 1";
$sonucx = mysql_db_query($cfgdbisim,$strSQLx);
$Kontrolx = mysql_fetch_assoc($sonucx);
 
	if (empty($Kontrolx)) //Konu, veritabanına daha evvel işlenmemişse buraya giriliyor.
	{
		$strSQL = "INSERT INTO $tablo_mesajlar (tarih, mesaj_baslik, mesaj_icerik, yazan, hangi_forumdan, goruntuleme, cevap_sayi, son_mesaj_tarihi, degistirme_sayisi, yazan_ip, degistiren_ip, bbcode_kullan, ust_konu, kilitli)";
		$strSQL .= "VALUES ('$tarih','$satir_messages[subject]','$satir_messages[body]','$poster','$forum_id','1','0','$tarih','0','127.0.0.1','','1','0','0')";
		$sonuc_isle = mysql_db_query($cfgdbisim,$strSQL) or die ('<h2>Sorgu başarısız</h2>'.mysql_error());
		$strSQL2 = "UPDATE $tablo_kullanicilar SET mesaj_sayisi = mesaj_sayisi + 1 WHERE kullanici_adi='$poster' LIMIT 1";
		$sonuc2 = mysql_db_query($cfgdbisim,$strSQL2) or die ('<h2>sorgu başarısız</h2>');
		$strSQL3 = "UPDATE $tablo_forumlar SET konu_sayisi = konu_sayisi + 1 WHERE id='$forum_id' LIMIT 1";
		$sonuc3 = mysql_db_query($cfgdbisim,$strSQL3) or die ('<h2>sorgu başarısız</h2>');
		$rakam=$rakam+1;
	}
}

echo $rakam.' Kayıt veritabanına işlendi...'; //Ekrana, veritabanına işlenen kayıt sayısı bastırılıyor..
?> 




Düzenlenme Nedeni: Koddaki Türkçe karakter sorunu düzeltilmiştir. Kimse cevaplarda aramasın diye doğrudan kod üzerinde düzenleme yaptım.



www.esoyun.com
www.forumtix.com
__________________

Bu ileti en son yonetici tarafından 18.03.2009- 20:31 tarihinde, toplamda 3 kez değiştirilmiştir.

Cvp:
Yazan Cevap içeriği

boşluk

yonetici
[Adem YILMAZ]
phpKF Ekip Başkanı

Kullanıcı Resmi

Kayıt Tarihi: 30.11.2006
İleti Sayısı: 3.006
Şehir: İstanbul
Durum: Gizli

E-Posta Gönder
Web Adresi
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 18:23
Alıntı yaparak cevapla  


Elinize sağlık...

cvp:
Yazan Cevap içeriği

boşluk

ferta
[Ferhat Aydın]
Forum Yardımcısı

Kullanıcı Resmi

Kayıt Tarihi: 18.10.2008
İleti Sayısı: 489
Şehir: Ankara
Durum: Forumda Değil

E-Posta Gönder
Web Adresi
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 18:32
Alıntı yaparak cevapla  


Eline Saglık Arkadaşım...

Hayko Cepkin Fan http://www.merkezforum.org
Cvp:
Yazan Cevap içeriği

boşluk

PRNRMLWBMSTR
[MuhammeT]
Forum Yardımcısı

Kullanıcı Resmi

Kayıt Tarihi: 06.06.2008
İleti Sayısı: 673
Şehir: İstanbul
Durum: Forumda

E-Posta Gönder
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 19:33
Alıntı yaparak cevapla  


Elinize Sağlık.

Tatil Gibisi Yok   (h)
Cvp:
Yazan Cevap içeriği

boşluk

Sh3ll
[Shell]

Kayıt Tarihi: 09.03.2008
İleti Sayısı: 84
Şehir: Kocaeli
Durum: üye uzaklaştırılmış

E-Posta Gönder
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 21:24
Alıntı yaparak cevapla  


 eline sağlık

Uzaklaştırılma Nedeni:
Çifte hesap kullanma
Cvp:
Yazan Cevap içeriği

boşluk

ByLegenS
[Yücel KAHRAMAN]
phpKF Ekip Üyesi

Kullanıcı Resmi

Kayıt Tarihi: 29.01.2008
İleti Sayısı: 393
Şehir: İstanbul
Durum: Gizli

E-Posta Gönder
Web Adresi
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 21:31
Alıntı yaparak cevapla  


elinize sağlık...

Cvp:
Yazan Cevap içeriği

boşluk

gültay
[forumixir]

Kullanıcı Resmi

Kayıt Tarihi: 19.02.2008
İleti Sayısı: 662
Şehir: İstanbul
Durum: Forumda Değil

E-Posta Gönder
Web Adresi
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 21:46
Alıntı yaparak cevapla  


 elinize sağlık

www.forumixir.com

Eğitimdir ki, bir milleti hür, bağımsız, şanlı, yüksek bir toplum halinde yaşatır, veya bir milleti kölelik ve yoksulluğa terkeder.
Cvp:
Yazan Cevap içeriği

boşluk

Chess
[Chess]

Kullanıcı Resmi

Kayıt Tarihi: 27.01.2008
İleti Sayısı: 295
Şehir: Gizli
Durum: Forumda Değil

E-Posta Gönder
Özel ileti Gönder

Cevap Tarihi: 10.02.2009- 22:45
Alıntı yaparak cevapla  


Elinize sağlık arkadaşım.

Cvp:
Yazan Cevap içeriği

boşluk

FaTe
[FaTe]
Forum Yardımcısı

Kullanıcı Resmi

Kayıt Tarihi: 13.01.2008
İleti Sayısı: 382
Şehir: Gizli
Durum: Gizli

E-Posta Gönder
Web Adresi
Özel ileti Gönder

Cevap Tarihi: 11.02.2009- 12:13
Alıntı yaparak cevapla  


Teşekkür ederim arkadaşım fakat mesaj başlıklarında türkçe karakter sorunu mu var?

Resim Ekleme

Şifalı Bitkiler V.2 - WebMaster Forumu

phpkf için bot yazılır.
Yeni Başlık  Cevap Yaz
Toplam 3 Sayfa:   [1]   2   3   >   son» 



Forum Ana Sayfası  »  phpKF MOD - Ek Özellik Bölümü  »  Yeni Özellik
 »  Rss haber çekme ve veritabanına kayıt..

Forum Ana Sayfası


Benzer konular
Başlık Yazan Cevap Gösterim Son ileti
Konu Klasör veritabanına ulaşılamıyor hatası bebeto59 3 129 22.01.2010- 12:14
Konu Klasör Veritabanından resim kaydetme ve çekme yardım Century 1 275 11.07.2010- 20:24
Konu Klasör mysql`e resim yolu kaydetme ve çekme nasıl yapılır pehpeh 5 1582 30.10.2009- 01:02
Konu Klasör Haber Bölümü SEBTURKA 6 179 19.04.2010- 15:27
Konu Klasör Haber Ekleme Sorunu burakdesing 4 156 25.03.2010- 22:05
Konu Klasör Acemi Bölümü Konu 1756 islambey 6 56 27.07.2009- 16:53
Konu Klasör Haber düzenlemede tarih sorunu freemelodi 4 326 05.05.2009- 00:48

Etiketler   Rss,   haber,   çekme,   veritabanına,   kayıt

    Forum Teması:
     

php Kolay Forum (phpKF)   Telif - Copyright © 2007 - 2010   phpKF Ekibi


- PHP KOLAY FORUM -
 RSS Beslemesini Görmek için Tıklayın   RSS Beslemesini Google Sayfama Ekle   RSS Beslemesini Yahoo Sayfama Ekle