AJAX & JavaScript & DOM & Php Umut Çetinkaya
Merhabalar, ben Umut Çetinkaya. AJAX-TR konuk yazarı olarak hepinizi saygıyla selamlıyorum...
Buradan sizinle paylaşmak istediğim konu AJAX ile Eş Zamanlı Form Kontrolü.
Kısaca konuyu anlatmak gerekirse eski usulde form kontrolünde tüm formu doldururdunuz ve bittiği zaman "Gönder" düğmesine basardınız. Eğer girmiş olduğunuz kullanıcı adı veya e-posta adresi başkası tarafından kullanılıyorsa ancak tüm formu doldurup gönderdikten sonra bunu öğrenebilirdiniz. Oysa ki AJAX ile o an doldurmuş olduğunuz metin kutusunu eş zamanlı olarak kontrol edilmesini sağlama imkanınız var. Yani kontrolü, gönder butonuna basmadan önce, form elemanı doldurulduğu anda yapabileceğinizi kastediyorum. Konuyu anlatırken AJAX-TR için hazırladığım ve AJAX Tab Kontrol ismini verdiğim örnek uygulamayı kullanacağım. İsmine "Tab kontrol" dedim çünkü Tab tuşuna basıldığı anda veya kutudan çıkıldığı anda kontrolün yapılışını anlatacağım.
Dosyalar
Uygulamada ana sayfayı oluşturan index.php dosyası, kontrolün yapıldığı ve bilginin gönderildiği kontrol.php dosyası ile eyceks kütüphanesinin dosyaları (loading.gif, eyceks.js) bulunmakta.
İlk Adım
Kontrol edeceğimiz formu index.php dosyasında oluşturuyoruz. Sadece bir metin kutusu bize yetecektir. Yanına da yeşillik niyetine parola kutusu koydum
Dikkat ederseniz kullanıcı adı metin kutusunun onblur olayına kontrol_et() işlemini yapmasını belirttim. Bu kontrol_et() fonksiyonu form bilgisini kontrol.php dosyasına gönderecek olan fonksiyon. Aşağıda bu fonksiyonu açıklayacağım.
Formumuzu hazırladık diyelim. Bizim burada yapacağımız şey kontrol butonuna basılmadan kullanıcı adının girildiği kutuyu, biz parola hanesine geçerken kontrol edilmesini sağlamak. Kontrolde, girilen kullanıcı isminin var olup olmadığına bakılmasını ve kullanıcıyı buna göre uyarmasını istiyoruz.
İkinci Adım
AJAX Tab Kontrol'de bu sitenin yazarı eburhan'ın arkadaşımızın eyceks kütüphanesini kullandım.
Bu ikinci aşamada eyceks'i form kontolü yapacağımız index.php dosyasına çağıralım.
-
[/javascript]
-
-
Bu işlemi de tamamladıktan sonra sıra geldi <strong>Tab</strong> tuşuna bastığımızda işlemesi gereken javascript fonksiyonuna.
-
-
<h3>Üçüncü Adım</h3>
-
[javascript]function kontrol_et(){
-
var sc = 'uyeadi='+ document.form1.kullanici_adi.value;
-
JXP(1, "sonuc", "kontrol.php", sc);
-
}
İşte bu kodlarla tabtuşuna basılıp parola kutusuna geçerken eyceks kutuphanesini de kullanarak kontrol.php dosyasına kullanıcı adını POST metoduyla (JXP) yolladık. Gelecek olan cevabı da "sonuc" id'sine sahip elemanda görünecek şekilde ayarladık.
Son Adım
Son adım ise kontol.php dosyasını oluşturduğumuz kısım. Bu dosyada kontrolü dilediğiniz gibi ayarlayabilirsiniz. İster veritabanına bağlantı kurun, isterseniz de bir e-posta adresinin uygun yazılıp yazılmadığını kontrol edin. Burası size kalmış. Ben ise sadece 5 tane üye ismi belirledim ve girilen ismin bunlardan birisiyle aynı olup olmadığını kontrol ediyorum. Ne de olsa önemli olan mantığı kavramak
kontol.php
-
isim zaten mevcut :-(</font>';
-
break;
-
case "":
-
echo '<font>isim girmediniz!</font>';
-
break;
-
default:
-
echo '<font color="blue">isim uygun :-)</font>';
-
}
-
?>
Sonuç
Umarım konuyu yeterince açık bir şekilde anlatabilmişimdir. AJAX'in gücünü farketmenin zamanı geldi de geçiyor
Saygılarımla...
AJAX Tab Kontrol uygulamasını buradan test edebilirsiniz.
Kaynak kodları da buradan indirebilirsiniz.
Toplamda 11835 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 13 kişi aynı anda okumuş.
Bugün 3 kez okunmuş.
Etiketler: ajax, eyceks, eş zamanlı, form, javascript, kütüphane, kontrol, php
Trackback Yorumları takip et Baskı Önizleme

(22 oy, ortalama 4.64)
# Fred Coder | 10 Nisan 2007, 07:39
kaynak kodları indiremiyorum linkte sorun var.
The page you’re accessing no longer exists or you mistyped the URL.
# eburhan | 10 Nisan 2007, 14:25
Güzel ve pratik bir uygulama
# yakuter | 10 Nisan 2007, 15:26
@Fred haklıymışsın, linki yanlış koymuşum. Şimdi düzelttim. Teşekkür ederim ilgin için
@erhan dediğin gibi pratik bir örnek. Daha da önemlisi büyük bir binanın iskeleti gibi. Bununla bir formu dilediğin gibi kontrol edilmesini sağlayabilirsin
# Metin | 11 Nisan 2007, 12:28
örnek uygulama ve anlatım için teşekkürler.
kullanıcı isimlerini ve/veya e-posta adreslerini eşzamanlı olarak database’den almak için bir adaptasyon yapılabilir mi?
# yakuter | 11 Nisan 2007, 18:42
@Metin, burada vermiş olduğumuz örnek rahatlıkla geliştirilebilir. Yapman gereken sadece iki işlem var.
Birincisi formdaki mail adresi olsun veya kontrol edilecek diğer bilgileri olsun formun kontrol edildiği dosyaya göndermek. Bunukontrol_et() isimli javascript fonksiyonundan ayarlayabilirsin.
İkincisi ise kontrolü dilediğin gibi yaptırmak için kontrol.php dosyasında veritabanı bağlantısı yapmak ve bilgileri çekmek. Yani asıl iş php’de ve kontrol.php dosaysında bitiyor
# umut | 12 Nisan 2007, 10:31
Arkadaşlar Öncelikle Beğendiğinize Çok sevindim bu uygulamada mantığını kavramanız için elimden geleni yaptım . @Metin kardeş senin dediğin gibi mysql den bilgilerin kontrolune adaptosyan olayı ise şöle olabilir . kontrol_et() Bu javascript fonksiyonu ve eyceks kütüphanesi yardımıyla kontrol.php dosyasına ulaşıyoruz.kontrol.php ye post ile veriyide yolluyoruz . Sonrasında kontrol.phpde aslen ekrana verecegı cıktıyı bız index.php içine gömüyoruz. Yani kontrol.php nasıl çıktı verirse versin onu biz index.phpde gösterceğiz. kontrol.php mysql de nasıl olduğu konusuna gelince onude normal ajax ve bu uygulamayı düşünmeden nasıl bir mysql ile baglantılı kontrol.php var ise bunuda öle düşünebilrsin .
Bendeki Tek Amaç estetik ve hız .
Ajaxta bu değilmidir zaten . ?
# evren | 23 Nisan 2007, 11:37
Teşekkürler, üstünde biraz çalışıp geliştirmek mümkün…
# ogalican | 27 Nisan 2007, 17:50
Çok güzel bir yazı olmuş. Teşekkürler.
# orhan | 02 Mayıs 2007, 14:52
birden fazla parametreyle kontrol.php ye nasil gondeririz
# Umut Çetinkaya | 05 Mayıs 2007, 23:29
merhabalar herkese;
Sevgili @orhan kardeş birden fazla parametre içn kontrol.php yi ben şu şekilde yaptım
user kontrolü gönderdiğim php bölümü : kontorl.php?islem=user
sifre kontrolü gönderdiğim php bölümü : kontrol.php?islem=sifre
Tarzında aynı seylerı yaptım
Kolay gelsin herkese !
# Genki | 12 Mayıs 2007, 19:57
çok güzel bir yazı olmuş. fakat bunun yanında mesala e-mail kontrol yapmak istiorum. çok uraştım beceremedim eger hem k.adi hem email kontrol yapıp kaynak kodları mailime atarsan sevinirim.
Başarılar dilerim..
# selant | 18 Mayıs 2007, 23:41
Genki arkadaşım neden sipariş verip de email adresine istiyorsun ? Burası paylaşım ve öğrenme platformu değil mi ? Birşey yapılacaksa doğru olanı buradan paylaşılmasıdır. Saygılar
# ferdi | 25 Haziran 2007, 12:17
Umut bey ellerie Saglik gusel Dokuman…
# alper | 27 Temmuz 2007, 10:13
oldukca kullanışlı. teşekkürler.
# Onur Keskin | 11 Ekim 2007, 15:53
Öncelikle bu güzel ve sade öğretici paylaşımlarınız için teşekkür ederim.
Çok fazla uğraş vermeme rağmen çözemediğim bir sorunum var.
Yukarıdaki örnekten gidersek;
textfield yerine select kullanalım ve select’in içinde 2 değer olsun bu değerlerden ilki ajax olsun ve valuesi’de ajax olsun ikincisi tr olsun ve valueside tr olsun. şimdi selectteki ilk değeri seçtik ve sorunsuz bir şekilde kontrol.php ye gönderdik zaten burayakadar bir sorunum yok sorun bundan sonra başlıyor. ben bu noktadan sonra ikinci bir select yaratmak ve o selecteki değeride seçtirip ekrana seçmiş olduğum ajax ve seçtiğim ikinci selecteki değeri yan yana yazdırmak istiyorum.
basit bir şekilde örneklendiriyim çünkü yukarısı pek anlamsız oldu
ilk select te araba markaları olsun bmw,mercedes burda bmw yi seçtik yanına bir select daha geldi orda araç marka nın modelleri 3,20.3,18 burdada 3,20 yi seçtim sonra ekrana
marka : bmw
model : 3,20
seçtiniz gibi bir yazı gelmesini istiyorum ama namümkün kuruttu beni..
# Umut Çetinkaya | 04 Aralık 2007, 13:25
@Onur Keskin Kardeşim bu sizin bahsettiğiniz olay bu makalem ile ilgili değil .. Sanırım tam anlamıyla sizin için şurda bi makale yazmıştım
herşeyiyle size örnek
buyrun buraya bir bakın
http://ajax-tr.com/ajax-ile-filtreleme/
# Osman YILMAZ | 02 Mart 2008, 23:22
Öncelikle ellerinize sağlık. çok güzel biçaışma gerçekten fakat benim bir sorunum var: ben bunu databaseden veri alacak şekilde ayarladım. bu sistem gayet güzel çalşıyordu ta ki türkçe karakterli bir isim alana kadar. database de türkçe karakter almamda bi sorun yok; giriş yapılabiliyor ama kullanıcı adı girildiğinde geçersiz yazısı görntüleniyor Yardımcı oluranız sevinirim.
Teşekkürler
# harunmursel | 08 Ağustos 2008, 17:46
merhaba arkadaşlar umut arkadaşın ellerine sağlık çok işime yaradı ancak action kısmına action=”void(0)” şeklinde yazınca sürekli olarak java ile iletişime geçebiliyorum ben formdaki verileri bi php doyasına gönderip kayıt ettirmek istiyorum bunu nasaıl yapabilirim? yardımcı olrusanız sevinirim
# harunmursel | 11 Ağustos 2008, 09:17
teşekkür ediyorum olayı çözdüm çok güzel bi uygulama olmuş ellerinize sağlık
# buğra | 08 Eylül 2008, 02:39
merhabalar
öncelikle anlatım için sağolun gerçekten işime yaradı fakat küçük bir sorunum var :S
kayıt formu için kullanacağım elimden geldiğince yaptım tek kontrol.php dosyasında yapamadım her sorugum için ayrı phplerde çalıştım fakat şifre ve şifretekrar alanlarımın birbirisi ile aynı olup olmadığını kontrol ettirmem için 2 veriyide göndermem gerekiyor beni oku dosyasında isim ve soyisim aynı anda gönderilmiş o şekilde de denedim farkı şekillerdede ama olmadı
bu sorunu nasıl çözebilirim bi fikri olan varmı eminim sizde bu şekilde bi uygulama yapmışsınızdır küçük bi örnekle yada sadece nasıl yapılacağı konusunda yardımcı olursanız sevinirim..
# harunmursel | 08 Eylül 2008, 14:44
ben bu sekilde kullandım çalışıyor kontrol.php’de kontrolleri yapıyorum;
function kontrol_et(){
var sc = ’sfr1=’+ document.form1.sifre1.value +’&sfr2=’+ document.form1.sfr2.value;
JXP(1, “sonuc”, “kontrol.php”, sc);
}
# buğra | 08 Eylül 2008, 21:16
denedim ama çalışmadı :S kodlarında bi yanlışlık olaibilirmi :S
# buğra | 09 Eylül 2008, 15:32
arkadaşlar baska bir makalede buldum iki farklı veriyi göndermeyi fakat bişi daha danışmam gerekicek galiba
var sifre = ’sifre=’+ document.form1.sifre.value;
var sifre2 = ’sifre2=’+ document.form1.sifretekrar.value;
var sc = “sifre=”+fc_(sifre)+”&sifre2=”+fc_(sifre2);
JXP(1, “sonuc2″, “kontrol/sifrekontol2.php”, sc);
şeklinde verilerimi gönderebiliyorum fakat sorunum şu ki echo ile gelen verileri yazdırarak bakıyorum verimin hali
sifre=12345 şeklinde sifre= kısmını kendim yazmıyorum iki atama olduğu için galiba kaynaklanıyor sadece gelen veri olan 12345 in kalmasını nasıl sağlıyabilirim :S
php ile gelen verilerde sifre= kısmını boş ifade ile değiştirerek yeni değere atarsam sorun kalkar ama ajax a alışmak için daha önce başına gelen bilen birileri yardım ederse sevinirim saygılar…
# can | 11 Eylül 2008, 00:06
kayıt butonuna bi care pls :S
# can | 12 Eylül 2008, 00:11
arkadaşlar formda bulunan radio butonun değerini bu yöntemle gönderemiyorum yardımcı olurmusunuz acaba?
# can | 12 Eylül 2008, 00:22
bugra arkadaşım
var sifre = ’sifre=’+ document.form1.sifre.value;
var sifre2 = ’sifre2=’+ document.form1.sifretekrar.value;
var sc = “sifre=”+fc_(sifre)+”&sifre2=”+fc_(sifre2);
JXP(1, “sonuc2″, “kontrol/sifrekontol2.php”, sc);
bunu tanımlamalardan birisinde tanım değerini kaldırarak yapabilirsin
var sifre = ’’+ document.form1.sifre.value;
var sifre2 = ’’+ document.form1.sifretekrar.value;
var sc = “sifre=”+fc_(sifre)+”&sifre2=”+fc_(sifre2);
JXP(1, “sonuc2″, “kontrol/sifrekontol2.php”, sc);
şeklinde:) saygılar…
# Turan Mavituna | 19 Eylül 2008, 05:55
Merhabalar.
Benim yapamadığım şeye gelince… Utanıyorum kendimden.
Ben sadece bir alanı değilde bir kaç alanı kontrol ettirmek istiyorum. Örneğin 1. kutucukta adı, 2. kutucukta soyadı, 3. kutucukta kullanıcı adını, 4. kutuckta ise e-posta adresini kontrol ettirmem istiyorum. Ama maalesef yapadım. Yardımlarınızı bekliyorum.
Saygılarımla.
# buğra | 19 Eylül 2008, 17:04
bence hiç ugrasma beş para etmez
kimse yardım edemio çünki kimse bilmio adam gibi:)
baska kütüphane kullanmaya başlasan iyi olur
option butonları gönderemiyorsun hatalı içinden kod değiştirerek saplarsın ama deyeceğini sanmıyorum
….
# Turan Mavituna | 25 Eylül 2008, 13:13
# buğra sanırım haklısın. Bir site yapılmış ama amacına ulaşmaktan uzak. Ben de şimdi başka kütüphane araştırmaya başladım. Teşekkür ederim.
# Mehmet Demir | 25 Eylül 2008, 22:20
@Turan Mavituna, her alan için bir tane ajax kontrolu yapabilirsin, tek fark her alan için başka bir fonksiyon yazman.
örneğin ziyaretçi mail girerken onchange fonksiyonuna
var sc = “mail=”+fc_(mail)+”&neyikontrol=mail”;
JXP(1, “mailsonucu″, “kontrol/kotrol.php”, sc);
kodunu içerir bir fonksiyon,
yine kullanıcı adını girerken
var sc = “kullanici=”+fc_(mail)+”&neyikontrol=kullaniciadini”;
JXP(1, “kullaniciadisonucu″, “kontrol/kotrol.php”, sc);
kodunu içerir bir fonksiyon yazmayı deneyebilirsin. ve diğer alanlar içinde.
Aslında herbiri için ayrı bir fonksiyon yazmana gerek yok, şöyleki; fonksiyon çağrılırken this diyerek çağıran alanın kendisinide fonksiyona atarak fonksiyon içindeyken neyikontrol = gelen_alan.name; dersen ve kontrol.php yi de o isme göre kodlarsan bir tane fonksiyon yeterli olur düşüncesindeyim.
Tabi denemek lazım ben deneme fırsatı bulamadım.
# buğra | 26 Eylül 2008, 18:42
yeterli olur tabikide
yanlız şu war dönen sonuc tek bir alanda kalır sanırım yani tek sorugunun faydası her alanın karşısına bir sonuc döndürmek tek sonuc dönsün derseniz o şekilde olabilir..
turan :
Bir site yapılmış ama amacına ulaşmaktan uzak
bu sözünü doğru bulmuyorum
çünki site amacına ulaşmıştır büyük ihtimal siteyi açanlar maddiyat kısmıyla ilgileniyolardır
ki sağlamışlardır 5-10 paylaşımları ile de senin işin olmuş olmamış önemsiyeceğini sanmam..
# Mehmet Demir | 27 Eylül 2008, 07:22
Öncelikle Arkadaşlar yukarıda yazdığım gibi tek fonksiyon ile birden çok alan alan kontrolü yapabilen bir uygulama hazırladım. Kullanıcı adı, eposta adresi, web adresi’ni kontrol ediyor. Şu linkten indirebilirsiniz. http://rapidshare.com/files/148732890/birdencokalankontrolu.rar.html
# Turan Mavituna | 03 Ekim 2008, 06:16
Çok teşekkür ederim. Mahcup oldum şimdi.
# Mehmet Demir | 04 Ekim 2008, 15:03
ben bu siteyi çok beğendim.
Doğrusu internetteki ders ve makalelerin birçoğu konu hakkında bir miktar veya daha fazla bilgi sahibi olmayı gerektiriyor.
hal böyle olunca herkesin aynı düzeyde fayda sağlaması mümkün olmuyor.
bu site benim ajax ile tanışmamı sağladı. editörlere çok teşekkür ederim. böyle güzel makalelerin devamı dileğiyle.
# Mert Ulubay | 14 Ekim 2008, 15:56
Arkadaşlar,
Ben submit olayını yapamadım. yani kontrol ettiğimiz alanlar ok lendikten sonra,formu nasıl submit edeceğiz?
# Əflatun | 06 Mayıs 2009, 06:23
Çox sağ olun. Təşəkkürlər.
Teşekkürler. Bi program üzerinde çalışıyorum. Ajax desteğine ihtiyacım vardı.
Teşekkürler Türkiye ve AJAX-TR.
# akın | 10 Mayıs 2009, 17:12
Arkadaşlar bu uygulamayı asp ile yapabilen var mı acaba. Kontrol.asp yi bir türlü çalıştıramadım yardımlarınızı bekliyorum teşekkürler.
# herace | 01 Haziran 2009, 00:24
Kaynak kodarı indiremiyorum ve makale içerisinde kodlarda da eksiklik var!
# pasion | 26 Haziran 2009, 12:52
linkler ölmüş