PHP ile tex' in üzerine yazı yazmak.

Başlatan ecarpar, 30 Kasım 2010 - 22:36:01

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ecarpar

Benim projemin günlüğüne döndü Forum, Rahatsızlık veriyor ise söyleyin lütfen.
Yapmaya çalıştığım projemde, flash bir sayfaya php kontrollü login olunduktan sonra resim yükleniyor ve o resimler albümler halinde listeleniyor, yaptığım işlemler sırasıyla Bir albüm oluşturuluyor ve oraya resimler konuluyor yada var olan bir albümün içine resim ekleniyor, resim ile ilgili bilgiler yüklendikten sonra daha sonra flash da kullanılmak üzere bir xml de tutuluyor,
<object source= "Resimler/Kucuk/YazTatili2010/DSC_0052.jpg" url= "DSC_0052.jpg" window= "_self" title= "flashdangelsin" Width ="191" Height ="128"/>
şeklinde fakat küçük bir sorunum olduğunu fark ettim title kısmı uçuyor nedeni ise herseferinde xml dosyam yeniden oluşturuluyor ve bütün xml in üzerine yeni bilgiler yazılıyor, fakat benim yapmam gereken daha önceden yazılmış bir satırın üzerine yazı yazdırabilmek. Daha önceden çözüldü konumda bu kodları paylaşmıştım sizler ile fakat sorunu u gün fark ettim flash dan title ye veri yollayınca.
$klasor = 'Resimler/Kucuk/';
//    <object source="Resimler/Kucuk/1.jpg" url="Buyuk/01.jpg" window="_blank" title="Resim 1" />

$art = 0;
//echo("$klasor.$album");
if ( $handle = opendir ( "$klasor"."$album" )) {
while ( false !== ( $file = readdir ( $handle ))) {
if ( $file != "." && $file != ".." ) {
$zit = "$klasor"."$album"."$file";
// echo($zit);
list($Width, $Height, $type, $attr) = getimagesize("$zit");
//echo("ananı");
//echo($file.'\"n"');
$xml_output .= '<object source= "'."$klasor"."$album"."$file".'" url= "'.$file.'" window= "'.$sfGelis.'" title= "'.$ResimAnisi.'" Width ="' .$Width. '" Height ="'.$Height.'"/>'."\n";
$art++;
}
}

//echo($art);
$xml_output .= "<\scene>";

closedir ( $handle ); }
$yaz=fopen("$xmlKlasoru"."$dosya_adi", "w"); //en başta belirlediğimiz isimde bir dosya yaratıyoruz.
fwrite($yaz,$xml_output);   //veritabanından gelen bilgileri açtığımız dosyaya yazdırıyoruz.
fclose($yaz);   //yazma işlemini kapatıyoruz.
}echo($xml_output);
?>


Yardımı ile her seferinde yeni bir xml oluşturuyorum peki xml in üzerine önceki bilgileri silmeden nasıl veri yazarım.
Eşşeğin uzun bir yolculuğa çıkmış olması onun at olarak döneceği anlamına gelmez.

risperdal

$yaz=fopen("$xmlKlasoru"."$dosya_adi", "w");

yerine

$yaz=fopen("$xmlKlasoru"."$dosya_adi", "a");

şeklinde yaparsan, daha önceden yazılmış olanın üstüne ekler her seferinde. Tabi bunu yaparken xml formatını bozmamaya dikkat etmelisin.

alquirel

Dosyayı "a" modunda açmak seni kurtarmayabilir. Çünkü "a" ile (ya da nasıl açarsan aç) açtığında xml dosyasının kök etiketi olan "scene" etiketinin kapanmış hali üzerine ekleme yapmış olursun.
Yani şuna benzer:

<?xml ... >
<scene>
  <object ... />
</scene>
  <object ... />
</scene>

Ki bu da geçersiz bir xml formatı olur.
Bu noktada çözüm, önce xml dosyasının içeriğini alıp, string fonksiyonlarıyla yeni içeriği oluşturup daha sonra xml dosyasına "w" moduyla geri yazmak olabilir.

Bir de title uçuyor demişsin. Ben bu verdiğin kodda title bilgisini oluşturan $ResimAnisi değişkenini belirlediğin yeri göremedim. Bu uçuşun sebebi bu olabilir mi?

ecarpar

title dediğim resmin üzerine gelince o resim ile ilgili yazılmış 2-3 satırlık bir anı * olacak.
şu an $ResimAnisi = "flashdangelsin"; yani default olarak o değerde bıraktım. flashdan veriyi yolluyorum o konuda sorunum yok o değişken flashdan veri gelince doluyor, fakat öncekiler kayboluyor :) sorunum o

bozuk formatlı xml yapsam flash onu okur </scene> kök dizinini kullanmasam benim için bir sorun olmaz fakat ozamanda standart bir xml olmaz herhalde benim kendim için uydurduğum bir xml olur gibi sanki onuda ben istemem standartlara uyan bir şeyler yapmaya çalışıyorum :).

risperdal şu an olan şu şekilde;
$yaz=fopen("$xmlKlasoru"."$dosya_adi", "a");
kodunu yazdım şu an php klasörün içindeki verileri okuyup aynılarını bir kere daha içine yazıyor.

<?xml version="1.0" encoding="iso-8859-1"?>
<scene>
<object source= "Resimler/Kucuk/YazTatili2010/DSC_1151.jpg" url= "DSC_1151.jpg" window= "_self" title= "flashdangelsin" Width ="103" Height ="155"/>
<\scene>
<?xml version="1.0" encoding="iso-8859-1"?>
<scene>
<object source= "Resimler/Kucuk/YazTatili2010/DSC_0052.jpg" url= "DSC_0052.jpg" window= "_self" title= "flashdangelsin" Width ="191" Height ="128"/>
<scene>


Ozaman bu işi mysql mi çözer ?
onda nasıl bir mantık kullanmam gerekli mysql'i de hiç bilmiyorum zaten o yüzden xml e yönelmiştim. Yokmudur şu sorunu yapmadan işimi halledicek bir yol.
Eşşeğin uzun bir yolculuğa çıkmış olması onun at olarak döneceği anlamına gelmez.

alquirel

MySQL bu konuda en rahat çözümdür.
Sana gereken bu source title gibi alanların olduğu bir tablo.
@sem0900 arkadaşın SUDO da dört yazılık bir MySQL yazı serisi var, ona bir göz atabilirsin.
PHP ve MySQL ile ilgili Türkçe kaynak rahat bulursun internette.

Ama bu sorununu MySQL olayına girmeden de çözebilirsin.
Dizini okumadan önce var olan xml dosyandaki verileri bir dizi değişkenin (array) içine koyarsın.
Daha sonra dizini okurken array'de var olup olmadığını kontrol edersin. Array'e sadece yeni resimleri eklemiş olursun.
En sonunda array'i xml dosyasına aktarırsın.

ecarpar

ozaman php ile xml okuma, dizideğişkenler kısımlarını incelemek lazım. Bakalım neler yapabileceğim.
Bakınıyorumda hata yapıyorum gibi gelmeye başladı, ben bir yazı dosyası oluşturup onun ismini xml yapıyorum gibi geldi birden http://tr.php.net/manual/tr/function.xmlwriter-start-attribute-ns.php
sayfalarında xml ler ile ilgili işlemler anlatılıyor fakat ben bunların hiç birini kullanmadımki ? Doğrudan text oluşturup xml olarak isimlendirdim.
Eşşeğin uzun bir yolculuğa çıkmış olması onun at olarak döneceği anlamına gelmez.

sem

Eğer ihtiyaç olursa diye not geçeyim;  bu ay SUDO'da PHP & MySQL "anlatılmaya çalışılacak"... Kolay gelsin herkese...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

alquirel

Alıntı yapılan: ecarpar - 30 Kasım 2010 - 23:48:33
ozaman php ile xml okuma, dizideğişkenler kısımlarını incelemek lazım. Bakalım neler yapabileceğim.
Bakınıyorumda hata yapıyorum gibi gelmeye başladı, ben bir yazı dosyası oluşturup onun ismini xml yapıyorum gibi geldi birden http://tr.php.net/manual/tr/function.xmlwriter-start-attribute-ns.php
sayfalarında xml ler ile ilgili işlemler anlatılıyor fakat ben bunların hiç birini kullanmadımki ? Doğrudan text oluşturup xml olarak isimlendirdim.

Ben de xml ile ilgili işlerimi genelde kendim hallederim. Bu tür sınıfları fonksiyonları kullanmıyorum.
xml formatında bir string oluşturup bunu xml uzantılı bir dosya şeklinde kaydetmek hataya yol açmaz merak etme. ;)

Kolay gelsin.