AJAX İle Yerinde Düzenleme
Bu yazımızda AJAX'in
kullanılabileceği yerler arasında özellikle veritabanı
uygulamalarında işimizi oldukça kolaylaştıran Yerinde Düzenleme (Edit
In Place) işlemini inceleyeceğiz. Konuyu daha iyi anlatabilmek için
yine örnek bir uygulama hazırladık. Erhan (eburhan) tarafından
yazılmış olan AJAX Yerinde Düzenleme Betiği'ni size ben anlatacağım.
Neden böyle oldu derseniz, aslında kodları da ben yazacaktım fakat
eburhan'ın zaten önceden kendisi için hazırladığını öğrendim.
Kodlarını biraz düzenleyip gönderdi. Bize de anlatmak kaldı
Önce Mantık
Yerinde düzenleme betiğinde sayfamızdaki bir "div" içinde
metnimiz bulunur. div'den başka bir etiket de olabilir. Örneğimizde
div kullandığımız için açıklamalarımda div diyeceğim. Fare ile
üzerine tıklandığında belirtilen div'in yerinde bir textarea veya
textbox oluşturulur ve bu form nesnesinin (textarea/textbox) değeri,
o an üzerine tıklanmış olan div'in değeri olur. Kutu içinde
değişiklikler yapıldıktan sonra kutunun dışında bir yere
tıklandığında yani onBlur olayında, kutudaki değer veritabanına veya
metin (text) dosyasına kaydedilir. Örnek uygulamamız olan AJAX
Yerinde Düzenleme Betiği'nde basit bir text dosyası kullandık.
Dosyalar
AJAX Yerinde Düzenleme Betiği dosyaları
eyceks: Bu uygulamamızda da eburhan'ın eyceks kütüphanesini
kullanıyoruz. Görmüş olduğunuz eyceks klasöründe de bu kütüphanenin
dosyaları mevcut.
depo.txt: Verileri sakladığımız metin dosyasıdır. Kutunun içine
girilen yazı, yaz.php dosyası ile depo.txt'ye yazılır ve oku.php
dosyası ile buradan okunur.
index.php: Betiğimizin temel dosyası, anasayfasıdır. Javascript
fonksiyonlarımız ve css tanımlamalarımız yine bu dosyada
bulunmaktadır.
oku.php ve yaz.php: Yerinde düzenlemenin gerçekleştiği div, betik
çalıştırıldığı anda oku.php'nin depo.txt dosyasını okuyarak almış
olduğu verileri görüntüler. div'in üzerine çift tıklandıktan ve
metin kutusunda gerekli düzenleme yapıldıktan sonra ekranda başka
bir yere tıklandığı anda metin kutusundaki bilgi yaz.php dosyası
vasıtasıyla depo.txt dosyasına yazılır.
Fonksiyonlar
Bu sefer farklı bir yöntem deneyerek kodların açıklamasını hemen
kodların bulunduğu satırlarda yaptık. Gelecek olan
yorumlara/eleştirilere göre bundan sonraki açıklamalarımızı ona göre
yapacağız. Fakat fonksiyonların maksatlarını kısaca anlatmanın
faydalı olacağını düşünüyorum.
EditInPlace() : Temel fonksiyonumuzdur. div'in metin
dosyasına dönüşmesini sağlar ve metin kutusundan farklı bir yere
tıklandığında DepoyaYaz() fonksiyonunu çağırır.
DepoyaYaz() : Metin kutusundan farklı bir yere tıklandığı
zaman EditInPlace() fonksiyonu tarafından bu fonksiyon çağırılır.
Kutudaki veriyi depo.txt dosyasına yazmaya yarar. Bunu yaparken de
AJAX ile yaz.php dosyasına metin kutusundaki veriyi gönderir.
DepodanOku() : div'in değerini bu fonksiyon döndürür. AJAX
ile oku.php'ye çağrı yapar ve oku.php'nin depo.txt'yi okuyarak
gönderdiği bilgiyi div'in içine yazar.
PLAIN TEXTJAVASCRIPT:
window.onload = function() {
// Pencere yüklendiği anda depodan AJAX ile okuma yap
DepodanOku();
// 'editlenebilir' alanının 'onclick' olayına 'EditInPlace'
fonksiyonunu yerleştir
document.getElementById('editlenebilir').onclick = EditInPlace;
}
function DepodanOku()
{
JXG(1, 'editlenebilir', 'oku.php');
}
function DepoyaYaz(yazi)
{
// eğer 'yazi' boş ise uyar
if( yazi.length <1 )
{
alert('Boş kayıtlar gönderilmez !');
document.getElementById('yazi_kutusu').focus();
return false;
}
else
{
// Yukarıda oluşturduğumuz 'textarea' nesnesinden yazıyı al
document.getElementById('editlenebilir').innerHTML = yazi;
// AJAX ile veriyi kaydet
// 'no_id' demek AJAX ile veriyi gönder, ama geriye bir sonuç alma
demek
var sc = 'yazi=' + fc_(yazi);
JXP(0, 'no_id', 'yaz.php', sc);
// Daha önce devre dışı bıraktığımız 'editlenebilir'
alanının
// 'onclick' olayını yeniden etkinleştiriyoruz
document.getElementById('editlenebilir').onclick = EditInPlace;
return true;
}
}
function EditInPlace()
{
// geçerli yazıyı al
var GecerliYazi = document.getElementById('editlenebilir').innerHTML;
// 'editlenebilir' alanının 'onclick' olayını geçici olarak devre
dışı bırak
document.getElementById('editlenebilir').onclick = function() { void(0)
};
// yeni bir 'textarea' nesnesi oluştur
var textarea = '<textarea id="yazi_kutusu" onblur="return
DepoyaYaz(this.value)">'+GecerliYazi+'</textarea>';
// 'geçerli yazı'nın olduğu yere yukarıda oluşturduğumuz
// textarea nesnesini yerleştiriyoruz. İçerisinde yazı da var.
document.getElementById('editlenebilir').innerHTML = textarea;
// Biraz önce oluşturduğumuz textarea nesnesine odaklanıyoruz
// Yani imleç otomatik olarak textarea nesnesinin içerisine giriyor
document.getElementById('yazi_kutusu').focus();
}
Sonuç
Bu örneği aslında ben hazırlayacaktım fakat eburhan zaten kendisi
için önceden yazmış. Bunun üzerine onun betiğini size anlatmaya
çalıştım. Umarım faydalı da olmuşuzdur.
PHP
Yerinde Düzenleme Betiği'ni buradan test edebilirsiniz.
Betiğin kaynak dosyalarını buradan indirebilirsiniz.
ASP (tşk. Janberk)
Yerinde Düzenleme Betiği'ni buradan test edebilirsiniz.
Betiğin kaynak dosyalarını buradan indirebilirsiniz.
Anket
Son Konular
2012-03-22 19:47 - Geliştirdiğin kodları satmak ister misin
2012-02-12 23:21 - SMF forumu vbulletin foruma aktarmak
2011-12-14 21:50 - Motorlu araçlar otomobil vergisi sorgulama
2011-12-14 21:47 - Sorgulamalar
2011-12-11 14:33 - Ben az önce ne arayacaktım
2011-09-10 22:51 - DSLR Fotograf Makinası sınıflandırması
2011-09-09 17:33 - ‘Crop Factor’ Nedir, hakkında bilgi
2011-09-09 17:30 - Fotograf Rehberi
2011-08-20 21:30 - Samsung LEDTV'lerde .SRF ve XFS süprizi
2011-08-19 00:45 - 2011 yılının web tasarım trendleri
2011-04-09 20:18 - Alan adları gerçek isim sahiplerine verilecek!
2011-01-13 01:43 - SEO İçin Dikkat Edilmesi Gereken Hususlar
2011-01-13 01:42 - Meta tag SEO Optimization
2011-01-13 01:41 - Google Adsense Hakkında Detaylı Bilgi
2011-01-13 01:40 - Soru Ve Cevaplar ile Google Adsense
2011-01-13 01:39 - Arama motoru Google ve Pagerank
2011-01-13 01:38 - Seo Sözlüğü
2011-01-13 01:37 - Google Arama Özellikleri
2011-01-13 01:36 - Adsense Reklam Yerleşimi
2011-01-13 01:35 - Robots.txt Dosyası Kullanım Robotları Yölendirme Kontrol
2011-01-13 01:34 - Sitenizin Google ve Web deki Yeri
2011-01-13 01:33 - Arama Motoru Bilgi ve İpuçları
2011-01-13 01:31 - Arama Motorları Teknikleri
2011-01-13 01:29 - Google Pagerank Detaylı Anlatım
2011-01-13 01:27 - Sitenize Ziyaretçiler En Çok Hangi Kelimeler İle Gelmiş
2011-01-13 01:25 - Pagerank Nedir?
2011-01-13 01:19 - Fireworks Shadow and Glow
2011-01-13 01:18 - Fireworks Sharpen
2011-01-13 01:16 - Fireworks Other
2011-01-13 01:13 - Fireworks Blur
2011-01-13 01:09 - Fireworks Bevel and Emboss
2011-01-13 01:05 - Fireworks Adjust Color
2011-01-13 01:03 - Fireworks Save as Style
2011-01-13 00:58 - Fireworks Text Menüsü
2011-01-13 00:54 - Fireworks Select Menüsü
2011-01-13 00:54 - Fireworks Modify Menüsü
2011-01-13 00:51 - Fireworks View Menüsü
2011-01-13 00:18 - Fireworks Edit Menüsü
2011-01-13 00:16 - Fireworks File Menüsü
2011-01-13 00:05 - İnternet - Web Tarayıcılar (Browser)
2011-01-13 00:04 - İnternet - Web Server Yazılımları
2011-01-13 00:03 - İnternet ve Web İlişkisi
2011-01-13 00:02 - İnternette Kullanılan Protokoller
2011-01-13 00:01 - İnternet - World Wide Web (WWW) Nedir?
2011-01-13 00:00 - İnternet - URL nedir?
2011-01-12 23:43 - İnternet Backorder Nedir?
2011-01-12 23:34 - İnternet - Virüs Nedir?
2011-01-12 23:32 - İnternet Paypal nedir? Nasıl Kullanılır?
2011-01-12 23:31 - İnternet - DNS Nedir?
Günün Konuları
c# . javascript . C . xmlhttprequest . xml . xmlhttprequest nedir . c# ile yazma . c# kod çalıştırma . while . c# kodları . integer . c# string . c# tipler . value . type . reference type . console . const . decimal . boolean . writelene . printf . include . scanf . ajax nedir . http . http istemleri . ajax örneği . ajax tarayıcı desteği . activexobject . ajax ile sunucuya istek göndermek . null . showhint . getxmlhttpobject . statechanged . ajax php örneği . ajax asp örneği . ajax html sayfası . c# doğuşu . c# programlama sanatı . c# atama işlemleri . c# kuralları . c# türlerin tanımlanması . int . programlama . c# program kodları . c# döngü . c# ile ekrana yazı yazdırmak . c# aritmetik . c# operatörler . c# int . casting . byte . c# console . c# konsoldan veri girişi . static void main . c# decimal veri tipi . c# kayar nokta verileri . IEEE . c# yazı biçimlendirme . currency . general . c# char . compareTo . equals . c# while döngüsü . c# for döngüsü . c# foreach döngüsü . döngüler . hata yakalama . catch . pperatörler . .net framework . delphi . c++ builder . write . c# deki string dönüşümler . C nedir . C fonkisyonlar . getch .














Yeni yorum gönder