9
EXE RANK
Z1rT
Fexe Kullanıcısı
Puanları
0
Çözümler
0
- Katılım
- 26 Kas 2009
- Mesajlar
- 9,190
- Tepkime puanı
- 0
- Puanları
- 0
- Yaş
- 33
- Web sitesi
- www.netbilgini.net
Kolay gelsin arkadaşlar.Daha öncede düşündüğüm "çözümlerin toplu listesinin olması" gerçektende kolaylık sağlayacaktır.Ben 6 tane yol çıkarabildim çözüm için.Ama belki sizin bir tanesini yapmanız bile yetecektir.Benim karşılaştığım en ilginç sorun: "php" kullanırken header("content-type...") kullanırken daha önceki projede Türkçe karakter olayını çözüp dün denediğimde çözülmememesi.Nasıl olur diye sorarsanız bilmiyorum
Ama bu sorunun birden fazla çözümü olduğu kesindir.Toparlamaya çalıştım bunları."PHP" ile uğraştığım için header() komutunun asp,asp.net de veya herhangi bilr dilde karşılığını bilen arkadaşlar yazarlarsa güzel olur.
Adımlar şöyle
Adım 1:Veritabanı karakter setlerinden içinden Türkçe karakterler olanını seçmeniz önemli.utf8_turkish_ci,latin5_turkish_ci gibi.Bunun ardından Şu kısımda önemli asıl SQL cümlesini çalıştırmadan önce şu komutu çalıtırmanız lâzım ("set names latin5").latin5 yerine Türkçe karakter olan bir set de seçebilirsiniz.
Adım2:Üzerinde çalıştığınız dosyanın(index.php-index.asp) karakter setini değiştirebilirsiniz.Bunu için not defteri farklı kaydet ansi->utf-8 yapabilirsiniz.Ya da kullandığınız editörün karakter setini değiştirme özelliğini kullanabilirsiniz.Yalnız bu işlem sayfanızdaki Türkçe karakterlerin abulmasına sebep olacaktır.Ama sonuç olarak sorun çözülebilir.
Adım 3:Çıktı verdiğiniz sayfanın karakter setinde de sorun çıkmış olabilir.Bunu için ****** http-equiv="Content-Type" *********"text/html; charset=ISO-8859-9"/> yazmanız yeterlidir.
Adım 4:Daha dün öğrendiğim ama daha öncede gözüme çarpan xmlhttprequest nesnesinin setrequestheader özelliğini iso yapmanızdır.Bunun örneğini aşağıda vereceğim.Ajax'ın nasıl kullanıldığını anlatırken.
Adım 5:Çıktı dosyasının başlığını bir şekilde belirlemeniz önemli *********iso-8859-9.Bunu script-dili ilede yapabilirsiniz."PHP" de örneğini göstereyim.header("content-type:text/html; charset=iso-8859-9"); şeklinde halledebilirsiniz.Diğer dillerde arkadaşlar gösterirlerse gerçekten güzel olur.
Adım 6:Bu biraz spesifik kalabilir.Ama mantığını söyleyim ki diğer s-dilinde bilen arkadaşlar varsa not düşebilirler."PHP" ile bir metnin karakter kodlamasını değiştirebiliyoruz.bunu iconv ile yapabiliyoruz.Örnek olarak $metin=iconv("ISO-8859-9","UTF-8",$metin);
Bu adımların hepsini tabikide sırayla yapmak zorunlu değilsiniz.Önemli olan 4.adım ile 3.adımın kesinlikle bulunmasıdır.Bu ikisiyle çözüme ulaşabilirsiniz.Ama olurya benim çektiğim gibi çok ilginç sıkıntılar çekerseniz diğer adımlarada göz atabilirsiniz.
Ajax Örneklerine geçeyim.Özellikle 4.Adımı göstereyim.
Bu kısım POST işlemi içindir.Mantığını anlatayım ajax() fonksiyonu ile xmlhttprequest nesnesi oluşturuyoruz.Bu kadar uzun olmasının sebebi.IE nin kılçıklık yapmasıdır.hazirla() fonksiyonu ile xmlhttprequest nesnemizin içeriğini hazırlıyoruz.İşte burda sahneye şu komut çıkıyor xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-9'); bununla ajax karakter seti belirliyoruz.Ve xmlhttp.send(sc) ile veriyi gönderiyoruz.Gönderdik tamam ama bunu kontrölü lâzım bunuda Guncelle() fonksiyonu ile yapıyoruz.Ve sonuc id li spanı veya divi güncelliyoruz.Bunların çalışması için ilk başta
ajax() fonksiyonu çalıştırıyoruz xmlhttp hazırlanmış oluyor ve haber ekleme işlemini tetikliyoruz haber_ekle() ile.Birde xmlhttprequest in durumunu readyState ile alabiliyoruz."4" bütün verinin aktarıldığını söylüyor bizde "4" e göre işlem yapıyoruz.GET metduda aynı mantıkla çalışır ondan onu geçiyorum ama kodları budur:
Ve Sırada Jquery var bu kod yığınından sonra size bir ferahlık getirecek.Jquery süper bir Framework dür.Kullanımı tavsiye ederim.Javascript öğrenmeye getElementById ile başladıktan sonra(temel değişkenleri ve bilgileri bildiğimizi varsayarak) jquery ye geçiş yapabiliriz.
Jquery ile de şöyledir.
success - bizim 4 e karşılık geliyor az çok hata oluşmaz da her şey doğru çalışırsa çalışıyor.Eğer hata olursa error çalışıyor.
Bunu <script type="text/javascript" src="jquerydosyasınınyeri.js"></script>
şeklinde kütüphaneyi eklemeniz karşılığında kullanabilirsiniz.Bunuda Burdan temin edebilirsiniz.Ve ayrıca jquery ile ilgilenmek isterseniz Burdan başlayabilirsiniz. Sol kısımdaki menüden effects e girip ordaki .show() methoduna bakabilirsiniz.Zaten nasıl çalıştığını biraz aşağı inince anlatıyor.Örneklerine bakabiliyorsunuz.
Gerçekten biraz uzun olmuş.Ama koskoca Ajax için az bile.Bu aralar ciddi ciddi moda olmuş.Ama sayfayı şenlendirdiği kesindir.İnşallah bundan sonraki arkadaşların bu kısımda sorun yaşamayıp enerjilerini daha dinamik bir sayfa için harcalar.Ve Ajax'a başlamadan bıkma olayınıda kapatmış oluruz.
Bir yöntem daha ekleyim.Karakter kodlamalarının hepsini utf-8 den yana kullanırsanız o zaman da sorunsuz bir yapı elde edebilirisiniz.
Ayrıca benim hazırladığım bir küçük ajax uygulaması var.Onuda indirerek inceleyebilirsiniz.Firefox 3.6.11 Opera 9.63 ve ie 6+ larda sorunsuz çalışıyor.Harici hatalarla uğraşmadan işlemlere kulak verebilirsiniz.
Döküman ommd'a aittir.

Adımlar şöyle
- Veritabanı karakter seti
- Dosya karakter seti
- Çıktı dosyasının(.html) karakter seti
- Ajax kütüphanesinin karakter setinin UTF-8 den ISO ya çevrilmesi
- Çıktı sayfasının karakter setinin script-dili ile belirlenmesi
- php-iconv çözümü
Adım 1:Veritabanı karakter setlerinden içinden Türkçe karakterler olanını seçmeniz önemli.utf8_turkish_ci,latin5_turkish_ci gibi.Bunun ardından Şu kısımda önemli asıl SQL cümlesini çalıştırmadan önce şu komutu çalıtırmanız lâzım ("set names latin5").latin5 yerine Türkçe karakter olan bir set de seçebilirsiniz.
Adım2:Üzerinde çalıştığınız dosyanın(index.php-index.asp) karakter setini değiştirebilirsiniz.Bunu için not defteri farklı kaydet ansi->utf-8 yapabilirsiniz.Ya da kullandığınız editörün karakter setini değiştirme özelliğini kullanabilirsiniz.Yalnız bu işlem sayfanızdaki Türkçe karakterlerin abulmasına sebep olacaktır.Ama sonuç olarak sorun çözülebilir.
Adım 3:Çıktı verdiğiniz sayfanın karakter setinde de sorun çıkmış olabilir.Bunu için ****** http-equiv="Content-Type" *********"text/html; charset=ISO-8859-9"/> yazmanız yeterlidir.
Adım 4:Daha dün öğrendiğim ama daha öncede gözüme çarpan xmlhttprequest nesnesinin setrequestheader özelliğini iso yapmanızdır.Bunun örneğini aşağıda vereceğim.Ajax'ın nasıl kullanıldığını anlatırken.
Adım 5:Çıktı dosyasının başlığını bir şekilde belirlemeniz önemli *********iso-8859-9.Bunu script-dili ilede yapabilirsiniz."PHP" de örneğini göstereyim.header("content-type:text/html; charset=iso-8859-9"); şeklinde halledebilirsiniz.Diğer dillerde arkadaşlar gösterirlerse gerçekten güzel olur.
Adım 6:Bu biraz spesifik kalabilir.Ama mantığını söyleyim ki diğer s-dilinde bilen arkadaşlar varsa not düşebilirler."PHP" ile bir metnin karakter kodlamasını değiştirebiliyoruz.bunu iconv ile yapabiliyoruz.Örnek olarak $metin=iconv("ISO-8859-9","UTF-8",$metin);
Bu adımların hepsini tabikide sırayla yapmak zorunlu değilsiniz.Önemli olan 4.adım ile 3.adımın kesinlikle bulunmasıdır.Bu ikisiyle çözüme ulaşabilirsiniz.Ama olurya benim çektiğim gibi çok ilginç sıkıntılar çekerseniz diğer adımlarada göz atabilirsiniz.
Ajax Örneklerine geçeyim.Özellikle 4.Adımı göstereyim.
PHP:
function ajax()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e)
{
xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
}
}
return xmlHttp;
}
function hazirla()
{
xmlHttp=ajax();
if (xmlHttp==null)
{
alert ('Tarayıcınız Ajax Desteklemiyor!');
return;
}
var baslik = document.getElementById('haber_baslik').value;
var icerik = document.getElementById('haber_icerik').value;
var url='haber_ekle.php';
var sc ='haber_baslik='+baslik+'&haber_icerik='+icerik;
xmlHttp.open('POST', url, true);
xmlHttp.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-9');
xmlHttp.setRequestHeader('Content-length', sc.length);
xmlHttp.setRequestHeader('Connection', 'close');
xmlHttp.onreadystatechange=Guncelle;
xmlHttp.send(sc);
}
function Guncelle()
{
if (xmlHttp.readyState==4 && xmlHttp.status == 200)
{
document.getElementById('sonuc').innerHTML=xmlHttp.responseText;
}
}
/////////////////////ÜSTTEKİ KISIM POST İŞLEMİ YAPAR
Bu kısım POST işlemi içindir.Mantığını anlatayım ajax() fonksiyonu ile xmlhttprequest nesnesi oluşturuyoruz.Bu kadar uzun olmasının sebebi.IE nin kılçıklık yapmasıdır.hazirla() fonksiyonu ile xmlhttprequest nesnemizin içeriğini hazırlıyoruz.İşte burda sahneye şu komut çıkıyor xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-9'); bununla ajax karakter seti belirliyoruz.Ve xmlhttp.send(sc) ile veriyi gönderiyoruz.Gönderdik tamam ama bunu kontrölü lâzım bunuda Guncelle() fonksiyonu ile yapıyoruz.Ve sonuc id li spanı veya divi güncelliyoruz.Bunların çalışması için ilk başta
ajax() fonksiyonu çalıştırıyoruz xmlhttp hazırlanmış oluyor ve haber ekleme işlemini tetikliyoruz haber_ekle() ile.Birde xmlhttprequest in durumunu readyState ile alabiliyoruz."4" bütün verinin aktarıldığını söylüyor bizde "4" e göre işlem yapıyoruz.GET metduda aynı mantıkla çalışır ondan onu geçiyorum ama kodları budur:
PHP:
function requestOlustur()
{
var conn;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer")
{
conn = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
conn = new XMLHttpRequest();
}
return conn;
}
function requestGonder(kadi,sifre,oturum)
{
gonderilecekler='ana_sayfa.php?yontem=ajax&kadi='+kadi+'&sifre='+sifre+'&oturum='+oturum;
http.open('get', gonderilecekler);
Http.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-9');
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse()
{
if(http.readyState == 4)
{
var response = http.responseText;
document.getElementById('bilgi').innerHTML = http.responseText;
if(http.responseText=='0'){
document.getElementById('bilgi').innerHTML = 'Girdiğiniz Kullanıcı adı veya Şifre yanlış';
}else{
document.getElementById('bilgi').innerHTML = 'Hoş Geldin '+http.responseText;
yonbasla();
}
}
}
///ÜSTTEKİ AJAX GET METODUDUR
Ve Sırada Jquery var bu kod yığınından sonra size bir ferahlık getirecek.Jquery süper bir Framework dür.Kullanımı tavsiye ederim.Javascript öğrenmeye getElementById ile başladıktan sonra(temel değişkenleri ve bilgileri bildiğimizi varsayarak) jquery ye geçiş yapabiliriz.
Jquery ile de şöyledir.
PHP:
var veri="kullanici=mrsb&sifre=44°isken=varsa daha böyle böyle ekliyoruz";
var ajax_url="mesela.php";
$.ajax({
data: veri,
type: "POST",
url: ajax_url,
timeout: 20000,
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-9",
success: function(e){//Buraya kod gelecek}
});
ÜSTTEKİ JQUERY POST VEYA GET METODU İÇİN GEÇERLİDİR.
success - bizim 4 e karşılık geliyor az çok hata oluşmaz da her şey doğru çalışırsa çalışıyor.Eğer hata olursa error çalışıyor.
Bunu <script type="text/javascript" src="jquerydosyasınınyeri.js"></script>
şeklinde kütüphaneyi eklemeniz karşılığında kullanabilirsiniz.Bunuda Burdan temin edebilirsiniz.Ve ayrıca jquery ile ilgilenmek isterseniz Burdan başlayabilirsiniz. Sol kısımdaki menüden effects e girip ordaki .show() methoduna bakabilirsiniz.Zaten nasıl çalıştığını biraz aşağı inince anlatıyor.Örneklerine bakabiliyorsunuz.
Gerçekten biraz uzun olmuş.Ama koskoca Ajax için az bile.Bu aralar ciddi ciddi moda olmuş.Ama sayfayı şenlendirdiği kesindir.İnşallah bundan sonraki arkadaşların bu kısımda sorun yaşamayıp enerjilerini daha dinamik bir sayfa için harcalar.Ve Ajax'a başlamadan bıkma olayınıda kapatmış oluruz.
Bir yöntem daha ekleyim.Karakter kodlamalarının hepsini utf-8 den yana kullanırsanız o zaman da sorunsuz bir yapı elde edebilirisiniz.
- MYSQL Karşılaştırmanız:utf8_turkish_ci
- Tüm kullandığınız dosyalarınızın kodlaması utf-8.Bunu için ben Aptana nın "Set encoding" seçeneğini kullanıyorum.
- Bundan sonra Veritabanında herhangi bir kodu çalıştırmadan önce "set names utf8" kodunu çalıştırıyorum.
- Ardından çıktı sayfam'ında(.html) karakter kodlamasını utf-8 yaptıktan sonra artık hiç bir sorunumuz kalmıyor.
Ayrıca benim hazırladığım bir küçük ajax uygulaması var.Onuda indirerek inceleyebilirsiniz.Firefox 3.6.11 Opera 9.63 ve ie 6+ larda sorunsuz çalışıyor.Harici hatalarla uğraşmadan işlemlere kulak verebilirsiniz.
Döküman ommd'a aittir.