AJAX & Hazır Kütüphaneler eburhan
4. index.php dosyasını hazırlayalım
index.php dosyasında AJAX işlemlerini yapacağız. AJAX tekniğini kullanarak cevapAl.php ve cevapKaydet.php dosyalarıyla iletişim kuracağız.
index.php dosyasının şablonu bu. Sayfamızdaki nesneleri biçimlendirmesi için stil.css dosyasını dahil ediyoruz. Ayrıca Prototype.js kütüphanesini kullanacağımız için de yine prototype.js dosyasını sayfamıza dahil ediyoruz. Bununla birlikte ekranda görüntülenecek olan Soruyu ve Evet/Hayır linklerini, ID'si kapsayici olan bölge içerisine göndereceğiz.
Şimdi de AJAX tekniğini kullanabilmemiz için gerekli olan JavaScript fonksiyonlarını yazacağız. Alttaki kodları, üstteki şablonun 6. satırından itibaren yazmaya başlamalıyız.
-
<script type="text/javascript">
-
Event.observe(window, 'load', aktifOylama, false);
-
-
function aktifOylama()
-
{
-
cevapAl(1);
-
}
-
-
function cevapKaydet(cevapTuru, soruNo)
-
{
-
$('cevap').innerHTML = 'Oy kaydediliyor ...';
-
-
var myAjax = new Ajax.Updater(
-
'cevap',
-
'cevapKaydet.php',
-
{
-
method: 'post',
-
parameters: 'cevapTuru=' + cevapTuru + '&soruNo=' + soruNo,
-
onComplete: aktifOylama
-
});
-
}
-
-
function cevapAl(soruNo)
-
{
-
$('kapsayici').innerHTML = 'Sonuç alınıyor ...';
-
-
var myAjax = new Ajax.Updater(
-
'kapsayici',
-
'cevapAl.php',
-
{
-
method: 'post',
-
parameters: 'soruNo=' + soruNo
-
});
-
}
-
</script>
Ajax tekniği için Prototype.js kütüphanesinin Ajax.Updater nesnesini kullanıyoruz. Hemen kısaca kullanımına bakalım.
Ajax.Updater(ID, dosya, { parametreler });
AJAX ile aldığımız veriyi sayfanın neresinde göstermek istiyorsak ID yazan yere konumunu belirtiyoruz. dosya yazan yere ise AJAX ile iletişim kurduğumuz sayfanın tam ismini yazıyoruz. Ve son olarak köşeli parantezler içerisine de Ajax.Updater nesnesinin alabileceği ek parametreleri bildiriyoruz. Örneğin verilerin POST yöntemiyle mi yoksa GET yöntemiyle mi gönderileceğini, eğer veriler POST yöntemiyle gönderilecekse bu verilerin ne olduğunu "parametreler" bölümüne belirtiyoruz. Ajax.Updater ile ilgili daha fazla bilgiyi bu sayfada bulabilirsiniz.
Yukarıda yazdığımız JavaScript kodlarına geri dönersek... aktifOylama isimli fonksiyon ekranda görüntülecek olan soruyu ve Evet/Hayır sonuçlarını çağırıyor. Bu çağırma işlemin sayfa yüklendiğinde tetiklenmesi için Prototype.js kütüphanesinin Event.observe nesnesinden faydalınıyoruz. Bu nesne bir olay dinleyici gibi çalışır. Daha fazla bilgi için bu sayfaya bakabilirsiniz.
cevapKaydet(cevapTuru, soruNo) fonksiyonu ile kullanıcının Evet linkine mi yoksa Hayır linkine mi tıkladığını ve sorunun numarasını alıyoruz. Aldığımız bu bilgileri AJAX ile cevapKaydet.php dosyasına yolluyoruz.
cevapAl(soruNo) fonksiyonu ise ekranda görünecek olan soruyu ve Evet/Hayır sonucunu göstermek için. Ekranda hangi soruyu ve o sorunun sonuçlarını görmek istiyorsak, bu fonksiyona soru numarasını bildirmemiz yeterli oluyor. Örneğin veritabanındaki "oylama" tablosunda kayıtlı olan 4. sorunun bilgilerin görünmesini istiyorsak bu fonksiyonu cevapAl(4) şeklinde kullanmamız yeterli oluyor. Yaptığımız bu örnek uygulamada ben 1 nolu sorunun bilgileri göstermek istedim. Bu yüzden aktifOylama fonksiyonu içerisinde cevapAl(1) tanımlaması yapmış olduğuma dikkat edin.
Ve bitirirken...
Bu kadar basit bir uygulama için biraz uzun bir yazı oldu. Bu yüzden sizi sıktıysam kusuru bakmayın. Elimden geldiğimce herşeyi açıklamaya çalıştım. Eğer unutmuş olduğum veya eksik kalan noktalar varsa yorum bölümünden bana yazabilirsiniz. Tekrar görüşmek üzere ...
Toplamda 9850 kez okunmuş.
Şu an 2 kişi okuyor.
En fazla 6 kişi aynı anda okumuş.
Bugün 4 kez okunmuş.
Etiketler: ajax, css, javascript, kütüphane, orta, php, prototype, veritabani
Trackback Yorumları takip et Baskı Önizleme

(32 oy, ortalama 3.97)
# ismailaltuntas | 10 Haziran 2007, 10:11
Güzel makale olmuş tebrikler…
# eburhan | 10 Haziran 2007, 10:22
Bu uygulamayı temel alarak şunun gibi web sitelerini rahatça yapabilirsiniz.
http://www.evet-hayir.com/
http://www.left-or-right.com/
# grkn | 10 Haziran 2007, 11:06
başarılı bir makele eburhan, teşekkürler ve tebrikler.
# Erdem | 10 Haziran 2007, 19:03
Peki bu uygulamayı nasıl döngü içine sokacağız? mesela forech döngüsüyle veritabanından alınan sırasıyla yazılar var tek sayfada ve bunlara nasıl ekleyeceğiz? id si 1 den başlayıp 5 kadar giden tek sayfada farklı makaleler diğelim. hepsinin ayrı ayrı oylaması olacak.
# bgoral | 11 Haziran 2007, 10:23
Merhaba,
Kendi kütüphanemizi yazalımmı, yazarsak ne kazanırız. Ne kaybederiz? Niye herkesin ajax kütüphanesi var, kurallar belli değilmi, niye hergün kütüphane çıkıyor? Hepsi gerçekten birbirinden farklımı.
Makaleniz güzel tebrikler, ancak bence bu sitede daha ziyade örnek uygulamalar vermek yerine, teknolojik gelişmeler paylaşılıp tartışılmalı. Mesela,
1. google gears ve client caching nedemek, gereklimi,
2. grease monkey’e millet neden kasıyor. sadece hack amaçlımı.
3. Scripletler gereklimi, neden gerekli, ne demek bu scriptlet.
4. Flex diye bişey var, caching, proxying, veya xmlhttp layeri olarak kullanılıyor, eskiden kullanılan flash yerine. Niye bu adamlar bunları kullanıyor. XmlHttpRequest neden yetmiyor.
5. Ajaxta serverside ne olmalı. RoR,Python, Php,lisp,java,perl hangisi neden önemli neden önemsiz. Hangisi kullanılabilir. Php bazı uygulamaları yapmak için neden yeterli değil, yetersiz olduğu noktalar neler.
6. AjaxTr prototype, jquery, mootools, dojo extensionlarımızı paylaştığımız bir yer olsunmu gibi
Umarım çok şey istemiyorumdur, ama bence şu öğrenme ve öğretme modundan çıkıp, tartışma ve paylaşma moduna geçersek bu konuda çok hızlı ilerleriz.
Bir de bir link vermek istiyorum. ben tüm videoları izlemedim ama eminim izleyip javascript konusunda bir çok yanlışımızdan kurtulabiliriz.
http://video.yahoo.com/video/profile?sid=33385
Teşekkürler.
# eburhan | 11 Haziran 2007, 13:10
@bgoral
Bu tartışmalar için zaten bir “tartışma grubu” mevcut. Buradan ulaşabilirsin. Bu grupta istediğin gibi tartışma açabilirsin.
# orhan | 12 Haziran 2007, 15:30
Ellerine sağlık @eburhan, gerçekten bu kadar teorik bilginin üzerine enfes bir uygulama olmuş, tebrikler.
# Murat | 13 Haziran 2007, 10:50
Erdem’in sordugu soruyu soracaktim ben de. Bu ajax ile birden fazla oylanabilen anketi nasıl gösteririz?
# Hasan | 15 Haziran 2007, 21:45
Tşekkürler gerçekten güzel bir makale olmuş.
# Ahmet Eyüp ARTIR | 17 Haziran 2007, 12:59
elinize sağlık , çok faydalı olacağına eminim…
# yakuter | 17 Haziran 2007, 17:20
@murat ve Erdem, bahsettiğiniz konuyu ancak kod ile açıklayabiliriz ki bu da yorumlarla olacak şey değil. Ajax Nedir e-posta grubunda dilediğiniz gibi görüşebiliriz
@bgoral, yorumun için çok teşekkürler. Aslında biz hem öğretmek hem de paylaşmak istiyoruz. Sonuçta bilgi olmadan tartışma olmaz. Siteyi kurarken ilk amacımız AJAX konusunu öğretmek ve örnekler, uygulamalar sunmaktı. Sonradan gördük ki bu konuyu enine boyuna tartışmak da gerekli fakat eburhan ve ben malesef bu hıza yetişemiyoruz. Bir makaleyi yazmak bile 2 saati bulabiliyor.
Benim stajım Erhan’ın da sınav stresi bitsin, bakacağız duruma
# Harun | 26 Haziran 2007, 19:40
Güzel makale elinize sağlık
# Emre | 10 Ekim 2007, 12:45
Merhaba
gerçekten güzel bir makale ancak localhost um da deniyorum ve veritabanından sadece 1 id numaraları soruyo çekiyor 1 den sonrakiler ekrana gelmiyor sorun bende mi acaba
# Yusuf Bekar | 28 Aralık 2007, 19:34
Asp olarakda cevirdim
Default.asp
____________________________________
Oyla v1.0 ( Professional Web Developer Mc YuSuF)
Event.observe(window, ‘load’, aktifOylama, false);
function aktifOylama()
{
cevapAl(1);
}
function cevapKaydet(cevapTuru, soruNo)
{
$(’cevap’).innerHTML = ‘Oy kaydediliyor …’;
var myAjax = new Ajax.Updater(
‘cevap’,
‘Kaydet.asp’,
{
method: ‘post’,
parameters: ‘cevapTuru=’ + cevapTuru + ‘&soruNo=’ + soruNo,
onComplete: aktifOylama
});
}
function cevapAl(soruNo)
{
$(’kapsayici’).innerHTML = ‘Sonuç alınıyor …’;
var myAjax = new Ajax.Updater(
‘kapsayici’,
‘Cevap.Asp’,
{
method: ‘post’,
parameters: ’soruNo=’ + soruNo
});
}
__________________________________________
Cevap.asp
________________________________________________
0 Then
EvetYuzde = int((Evet / Toplam) * 100)
HayirYuzde = int((Hayir / Toplam) * 100)
Else
EvetYuzde = 0
HayirYuzde = 0
End IF
%>
);” title=” kisi”>
EVET (%)
);” title=” kisi”>
HAYIR (%)
_____________________________________________
kaydet.asp
_____________________________________________
Set Conn=Server.CreateObject(”Adodb.Connection”)
Conn.Open “Provider=Microsoft.Jet.oleDb.4.0;Data Source=” & Server.Mappath(”Db.mdb”)
Turu = Request.Form(”cevapTuru”)
SoruID = Request.Form(”soruNo”)
IF Turu=”e” Then
Conn.ExeCute(”Update Sorular Set Evet = Evet + 1 Where ID=”&SoruID&”")
Else
Conn.ExeCute(”Update Sorular Set Hayir = Hayir + 1 Where ID=”&SoruID&”")
End If
___________________________________________________
veritabanı Acces
Tablo adı : Sorular
Sütün adı Türü
ID otomatik sayı
Soru not
Evet sayı
hayır sayı
kolay gelsin
# Cem | 20 Şubat 2008, 22:52
cok güzel bir calisma Allah razi olsun. Yalniz Erdem’in sordugu soruyu ben de tekrar dile getirmek istiyorum : “bu uygulamayi nasil döngü icine sokacagiz?”
sevgili yakuter, Ajax Nedir e-posta grubunda, konunun aciklanabilecegini yazmisti ancak orada da arastirmalarima ragmen, ne yazik ki bu konuyla ilgili bir bilgi bulamadim. yardimci olabilirseniz cok sevinirim.
kolay gelsin