Xml ye php den veri aktarma

Kodla Büyü

mu_korkmaz

Seçkin Üye
Seçkin Üye
Mesajlar
488
Okul sitelerinde kullanılan haber scriptlerinde xml dosyası içinde image yolu,haber başlıklarını veri tabanına bağlanıp almasını nasıl sağlarız. özellikle bbnet şablonu kullanan arkadaşlar için faydalı olabileceğini düşünüyorum.
Kod:
<item image="haber_resimleri/e4f81b85ad5f32d073d73c4ed33ce4.jpg"  link="" target="_self" textBlend="no"><![CDATA[<font color='#EEC008'>İnsan Hakları Haftası<br /></font><font color='#FFFFFF'>10-17 Aralık insan hakları haftası için etkinlikler yapıldı.</font>]]></item>
 
Bir htcacces dosyası hazırlarsın php dosyasını xml diye gösterisin ve o php sayfasının içine veritabanından çektiğin resimlerin yollarını yazdırırsın olur biter.

veritabanına bağlandınız diye varsayıyorum
echo <xml başla>"; xml in içeriğini bilmiyorum ama item den önce gelecekleri burda yazdırınız
<?php $sorgu=mysql_query("select * from haber");

while ($haber=mysql-fetch_array($sorgu)) {

echo '<item image="haber_resimleri/<?=$haber["resim"]?>" link="" target="_self" textBlend="no"><![CDATA[<font color='#EEC008'><?=$haber["baslik"]?><br /></font><font color='#FFFFFF'><?=$haber["yazi"]?></font>]]></item>';
}

echo "<xml bitti>"; itemlerden sonrası burda yazılacak mantık bu. dostanızın adı xml.php ise htcacces içine

RewriteRule ^xml.xml$ xml.php [L,NC] yazmanız yterli. umarım mantığını anlamısınızdır. Okuldayım anca bukadarınız yazabildim
 
faky18' Alıntı:
Bir htcacces dosyası hazırlarsın php dosyasını xml diye gösterisin ve o php sayfasının içine veritabanından çektiğin resimlerin yollarını yazdırırsın olur biter.

örnek üzerinden gösterirseniz sevinirim hocam.
 
mu_korkmaz' Alıntı:
Herhalde buna cevap verecek sadece @hasari hocam :D
Hocam ben hiç denemedim bu sebeple bir şey diyemeyeceğim.

@faky18 hocamızın dediği şekil bana mantıklı geldi sanırım bu yolla yapılabilir.
 
okuladresi.com/xml.php


1 - xml.php adında bir php dosya oluştur
2- ilk satır keisnlikle şöyle olsun
Kod:
    <?php  
    header ("Content-Type:text/xml");  
    ?>

ondan sonra php ile mysql e veya herhangi bi servere bağlan verileri çek
çektiğin verileri elindeki orjinal xml yapısına uygun çıktı verecek şekilde echo ile yazdır.

en kısa anlatım bu . eğer php biliyorsan. devamını getirmen lazım.

çalışan bir xml.php dosyasının çıktısı artık bir xml olacağından
erişmek sitediğin haber manşet vb eklentilerdeki xml dosyasının adresi yerine okulsitesi.com/xml.php yazman yeterli olacaktır.
 
php ile xml okumayacak mısın? yoksa arkadaşlar mı yanlış anladı ya da ben mi :S
Kod:
<?php
$icerik = xml_load_file("dosya_adi.xml");
print_r($icerik);
?>
 
Rüzgara Karşı'' Alıntı:
php ile xml okumayacak mısın? yoksa arkadaşlar mı yanlış anladı ya da ben mi :S
Kod:
<?php
$icerik = xml_load_file("dosya_adi.xml");
print_r($icerik);
?>
Yanlış anlamışsın. :)
Veritabanından çektiği veriyi xml dosyasına aktaracak. swf dosyası da bu xml dosyasını okuyacak.
 
hasari' Alıntı:
Rüzgara Karşı'' Alıntı:
php ile xml okumayacak mısın? yoksa arkadaşlar mı yanlış anladı ya da ben mi :S
Kod:
<?php
$icerik = xml_load_file("dosya_adi.xml");
print_r($icerik);
?>
Yanlış anlamışsın. :)
Veritabanından çektiği veriyi xml dosyasına aktaracak. swf dosyası da bu xml dosyasını okuyacak.
evet tam tersiymiş. php'den xml'ye veri aktarımı... o zaman alpaygunes hocanın dediği gibi olacak
 
bu kadar ustanın arasında ne söyleyeceğimi bilmiyorum.
alpaygunes hocamın dediği gibi birşey yapmaya çalıştım ama swf dosyasının bilgileri aldığı dosya data.xml
ben bu yazılan kodları nasıl data.xml ye aktaracağım
 
fla sı varsa aç data.xml nın yazdığı yere xml.php yaz.
ama şimdi sen fla da yok dersin.
ozman işler biraz karışır.
veritabanı güncellendikçe data.xml yi yeniden oluşturan bir php kodu yazmalısını. ve bunu her güncellemeden sonra birdefa çalıştırmalısınız.
öncelikle şunu merak ediyorum , yukarda anlatmaya çalıştığım xml.php yi oluşturup xml çıktısı alabiliyomusun. eğer alabiliyorsan işin en önemli ve zor yerini haleetmişsin zaten.
geriye bu dosyanın çıktısını data.xml şekilnde kaydetmek kalıyor.

sen kodların bir yerinden başlamalısınki bizde hatalı satırlar hakkında fikrimizi yazalım.
 
alpaygunes' Alıntı:
fla sı varsa aç data.xml nın yazdığı yere xml.php yaz.
ama şimdi sen fla da yok dersin.
ozman işler biraz karışır.
veritabanı güncellendikçe data.xml yi yeniden oluşturan bir php kodu yazmalısını. ve bunu her güncellemeden sonra birdefa çalıştırmalısınız.
öncelikle şunu merak ediyorum , yukarda anlatmaya çalıştığım xml.php yi oluşturup xml çıktısı alabiliyomusun. eğer alabiliyorsan işin en önemli ve zor yerini haleetmişsin zaten.
geriye bu dosyanın çıktısını data.xml şekilnde kaydetmek kalıyor.

sen kodların bir yerinden başlamalısınki bizde hatalı satırlar hakkında fikrimizi yazalım.
Şu anda bu aşamadayım

Kod:
<?php 
header ("Content-Type:text/xml"); 
include("baglan.php");

function kisalt($degisken, $max_uzunluk){
if (strlen($degisken) > $max_uzunluk){
$degisken = substr($degisken, 0, $max_uzunluk);
$shn = strrpos($degisken, " ");
if($shn === false) {
return substr($degisken, 0, $max_uzunluk)."…";
}
return substr($degisken, 0, $shn)."…";
}else{
return $degisken;
}
}
$limit=5;
$oku=mysql_query("select * from haberler where yayinla='1'");
$sayi =mysql_num_rows($oku);
$sayfasayisi=$sayi/$limit;
$sonkayit=($sayfasayisi-1)*$limit;
if(!$habersayfa==''){$sonkayit=($habersayfa-1)*$limit;}
else {$sonkayit=0;}
$oku=mysql_query("select * from haberler where yayinla='1' order by id desc limit $sonkayit,$limit");
$sayfasayisi=ceil($sayi/$limit);
while ($vericek=mysql_fetch_array($oku)){
$id=$vericek['id'];
$baslik=$vericek['baslik'];
$icerik=kisalt($vericek['icerik'],500);
$tarih=$vericek['tarih'];
$resim_yolu=$vericek['resim_yolu'];
$izlenme=$vericek['izlenme'];
$basliki = permayap($baslik); 
}

while ($icerik=mysql-fetch_array($oku)) {

echo "item image='haber_resimleri/<?=$resim_yolu['resim']?>' link='' target='_self' textBlend='no'><![CDATA[<font color='#EEC008'><?=$baslik['baslik']?><br /></font><font color='#FFFFFF'><?=$icerik['yazi']?></font>]]></item>";
} 
?>

ayrıca data.xml de veriler şu şekilde
Kod:
<item image="haber_resimleri/e4f81b85ad5f32d073d73c4ed33ce4.jpg"  link="" target="_self" textBlend="no"><![CDATA[<font color='#EEC008'>Bilgi Yarışması<br /></font><font color='#FFFFFF'>6. Sınıflar arasında bilgi yarışması yapılacaktır. </font>]]></item>
 
Yukarıdaki kodda gereksiz işlem var böyle yazın

<?php
header ("Content-Type:text/xml");
include("baglan.html"); --> baglan.php olacak

$limit=5;
$oku=mysql_query("select * from haberler where yayinla='1'");
$sayi =mysql_num_rows($oku);
$sayfasayisi=$sayi/$limit;
$sonkayit=($sayfasayisi-1)*$limit;
if(!$habersayfa==''){$sonkayit=($habersayfa-1)*$limit;}
else {$sonkayit=0;}
$oku=mysql_query("select * from haberler where yayinla='1' order by id desc limit $sonkayit,$limit");
$sayfasayisi=ceil($sayi/$limit);
while ($vericek=mysql_fetch_array($oku)){
$id=$vericek['id'];
$baslik=$vericek['baslik'];
$icerik=kisalt($vericek['icerik'],500);
$tarih=$vericek['tarih'];
$resim_yolu=$vericek['resim_yolu'];
$izlenme=$vericek['izlenme'];
$basliki = permayap($baslik);

echo "item image='haber_resimleri/<?=$resim_yolu['resim']?>' link='' target='_self' textBlend='no'><![CDATA[<font color='#EEC008'><?=$baslik?><br /></font><font color='#FFFFFF'><?=$icerik?></font>]]></item>";
}
?>

htacces içine en üstte dediğimi yaz oldu bitti
 
$icerik=kisalt($vericek['icerik'],500); // bu satirdaki kislat fonsiyonunu yazmayı unuttunuz sanırım
 
şimdi çıktı olarak ne alıyorusunuz?
hatamesajımı veriyor.
çıktı olarak xml veriyorsa fla nın içidaki ilgili satırıda düzelttinmi tamamdır.

Yazdığınız kodları deneyin
www.okulsitesi.com/xml.php

eğer hatasız olarak data.xml ye benzeyen yapıda çıktı veriyorsa , geriye fla nın ilgili satırını değştirmek kalıyor.
 
BBNET
Geri
Üst