Ajax İle Filtreleme

AJAX & Php Umut Çetinkaya

Tekradan merhaba arkadaşlar. Yine bir AJAX uygulaması ile sizlerleyim. Bu yazımda sizlerle AJAX tekniğinin ne kadar hoş ve güzel bir teknik olduğunu tekrar görmüş olacağız. Sizlere bu makalemde AJAX ile filtreleme yönetimini PHP ile birleştirerek anlatacağım. Bu yöntemle çok daha hızlı arama yapabilir ve çok daha estetik bir görüntü ile filitreleme işlemini yapabilirsiniz.

Dosyalar

Bu uygulamada anasayfayı oluşturan index.php, filitrelemenin yapıldığı filitrele.php, oyuncuların özelliklerini göstermek istediğim oyuncu.php dosyası ve eyceks kütüphanesi içindeki dosyalar (loading.gif , eyceks.js) bulunmaktadır .

Başlıyoruz . . .

İlk olarak uygulamamıza filitrenin nasıl edileceği konusunda karar vermemiz lazım. Bu uygulamada aynı zamanda ajax'te Dinamik Formları da kullanmış olacağım. Biliyorsunuz ajax'in diğer bir güzel özelliği ise Dinamik Formlar'dır. Dinamik formdan kastım isteğimize o anda karşılık verecek olan formlarlardır. Dinamik formlarla ilgili AJAX Ne Gibi Durumlarda Kullanılmalı? başlıklı yazıya da bakabilirsiniz. Neyse konuyu fazla uzatmadan hemen ilk bölüme geçiyorum.

Filitreleme formumuz :

PHP:
  1. <form id="form1" name="form1" method="post" action="javascript:void(0)">
  2.  
  3. <select name="takimlar" onchange="hangi_takim()">
  4. <option value="0">Takımlar</option>
  5. <option value="1">Galatasaray</option>
  6. <option value="2">Fenerbahçe</option>
  7. <option value="3">Beşiktaş</option>
  8. </select>
  9.  </form>

Şimdi bu formu eyceks kütüphanesi ile filitre.php'ye göndermek istiyorum. Hepimiz eyceks kütüphanesinin nasıl çalıştığını biliriz. Bunu da ek olarak yazayım.

Eyceks ile filitre.php ye gönderme :

PHP:
  1. function hangi_takim(){
  2.  
  3.             var takimlar = document.form1.takimlar.value
  4.  
  5.             var sc = 'takimlar='+ fc_(takimlar)
  6.  
  7.             JXP(1, 'takim_goster', 'filitrele.php', sc)
  8.  
  9.       }

Evet şimdi sıra sistemden herhangi bir takımı seçtiğimizde bize o takımın oyuncularından bazılarını nasıl getirebileceğimizde. Bu iş filitre.php'de bitiyor tabii ki. Ben oyuncuları gosterdikten sonra bir kez daha o oyuncular arasından seçim yaptırarak oyuncu hakkında kısa ve öz bir bilgiyi ekranda göstermek istiyorum. Onun için filitre.php'de de biraz farklılık yapacağım.

filitre.php dosyasındayız :

PHP:
  1. <?
  2. $takim= $_POST['takimlar'];
  3. ?>
  4.  
  5. <form id="form2" name="form2" method="post" action="javascript:void(0)">
  6.  
  7. <?
  8. if($takim==1){
  9. ?>
  10.  
  11. <select name="oyuncular" onchange="hangi_oyuncu()">
  12. <option value="">Oyuncu Seciniz..</option>
  13. <option value="1">Necati Ates</option>
  14. <option value="2">Hakan Sukur</option>             
  15. <option value="3">Umit Davala</option>
  16. </select>
  17.  
  18. <?
  19. }elseif($takim==2){
  20. ?>
  21.  
  22. <select name="oyuncular" onchange="hangi_oyuncu()">
  23. <option value="">Oyuncu Seciniz..</option>
  24. <option value="1">Appiah </option>
  25. <option value="2">Serkan</option>           
  26. <option value="3">M.Yozgatli</option>
  27. </select>
  28.  
  29. <?
  30. }elseif($takim==3){
  31. ?>
  32.  
  33. <select name="takimlar" onchange="hangi_oyuncu()">
  34. <option value="">Oyuncu Seciniz..</option>
  35. <option value="1">Vedran Runje</option>
  36. <option value="2">Jose Kleberson Pereira</option>
  37. <option value="3">Deivson Rogerio Da Silva</option>
  38. </select>
  39.  
  40. <?
  41. }elseif($takim=="0"){echo "<font color=\"blue\">Herhangi Bir Takim Secmediniz !</font>";
  42.  
  43. } else {echo "<font color=\"red\"><b>Hata ! </b></font>"; }
  44. ?>
  45.  
  46. </form>

filitre.php'de ise şu şekilde bir olay izledim. 1. Takımı seçerse şu futbolcuları sırala, 2. takımı seçerse şu futbolcuları sırala tarzında. Yine üzerine bastırarak belirtmek istiyorum. Amaç sadece mantık. İşin içine veritabanı da girince inanılmaz güzel, zevkli ve estetik hale getirebilirsiniz olayı.

filitre.php'de dikkat etmeniz gereken olay şu. Benim 3. bir aşama daha istemem. Yani Oyuncular hakkında kısa ve öz bir bilgi. Onun için tüm forumları ilk formumuz gibi düzenledim filitre.html içine çağırdıgımızda eyceks ile yine kodlar çalıştıracağız. Bu formların OnChange özelliğine dikkat edin ." hangi_oyuncu() " Görüyorsunuz değıl mi? Şimdi filitre.html de hangi_takim() altına bir de hangi_oyuncu() fonksiyonu yazmamız lazım. O da şu şekilde olacak:

hangi_oyuncu() fonksiyonu :

PHP:
  1. function hangi_oyuncu(){
  2.  
  3.             var oyuncular = document.form2.oyuncular.value
  4.  
  5.             var sc = 'oyuncular='+ fc_(oyuncular)
  6.  
  7.             JXP(1, 'oyuncu_goster', 'oyuncu.php', sc)
  8.  
  9.       }

İşte bu fonksiyonu aynı javascript bloğumuz içine yazıyoruz Çağırdığımızda ise eyceks kütüphanesini kullananların bildiği gibi oyuncu.php'nin çıktısı, ID'si "oyuncu_goster" olan bir DIV alanının içerisine yazdırılacak.

oyuncu.php dosyası :

PHP:
  1. <?
  2. $oyuncu= $_POST['oyuncular'];
  3. ?>
  4.  
  5. <?
  6. if($oyuncu==1){
  7. ?>
  8.  
  9. Bu Seçtiğiniz Oyuncu 1 numaralı bir oyuncudur.
  10.  
  11. <?
  12. }elseif($oyuncu==2){
  13. ?>
  14.  
  15. Siz şimdi 2 numaralı oyuncuyu seçtiniz.
  16.  
  17. <?
  18. } else if ($oyuncu==3){
  19. ?>
  20.  
  21. 3 Numaralı oyuncuyu seçtiniz !
  22.  
  23. <?
  24.  
  25. }elseif($oyuncu=="0"){echo "<font color=\"blue\">Herhangi Bir Takim Secmediniz !</font>";
  26.  
  27. }else{echo "<font color=\"red\"><b>Hata ! </b></font>"; }
  28.  
  29. ?>

Sonuç :

İşte birkez daha ajax ile php birleşince neler yapabiliyor bunu gördük. Sizlere yardımcı olabildiysem ne mutlu bana .

Saygılarımla Umut ÇETİNKAYA.

Toplamda 7323 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 6 kişi aynı anda okumuş.
Bugün 4 kez okunmuş.

Etiketler:

1 oy2 oy3 oy4 oy5 oy (30 oy, ortalama 4.4) Oylanıyor ... Oylanıyor ...

  1. PHP ve Yerleşik DOM Sınıfları
  2. Javascript Sanal Klavye Yapalım
  3. Ajax Olmasaydı Ne Yapardık ? :)

Trackback Yorumları takip et Baskı Önizleme

28 yorum var

  1. # murat yüksel | 05 Mayıs 2007, 17:20 Gravatar

    yazınız için teşekkürler güzel bir çalışma.PHP ile MYSQL kullanılarak ve buna ek olarak AJAX sayesinden veri çekme işlemleri nasıl oluyor bu konu hakkında bilgi verebilirmisniz özellikle bir döküman hazırlayarak.Mesela bir yerdeki haberleri ajax ile mysqlden çekip sayfa yenilemeden sürekli olarak anasasayfaya gelmesini sağlamak için

  2. # Nous | 13 Mayıs 2007, 06:24 Gravatar

    selam hocam gayet güzel bir makale olmuş.. ellerine sağlık..

    @murat yüksel;

    şu yolu takip edebilirsin

    $takimial = mysql_query(”SELECT * FROM takimlar where takimadi = ‘”.$_POST[’oyuncular’].”‘”);
    $takim = mysql_fetc_array($takimlar);

    vs vs vs vs..

  3. # Nous | 13 Mayıs 2007, 06:25 Gravatar

    $_POST[’oyuncular’] degilde $_POST[’takimlar’] olması gerekiyor.. en azından ben bu şekilde yapmıştım..

  4. # Sefa | 14 Mayıs 2007, 21:19 Gravatar

    Benim sorunumda databaseden bilgileri alip burada listeletebilirmiyiz..örnekse; http://unspace.ca/livefilter bu sitedeki gibi..bu sitede download da var ama php degil sanirim bisey anlamadim konuyla ilgili acil yardim ederseniz sevinirim

  5. # selant | 18 Mayıs 2007, 22:57 Gravatar

    Hocam dosyaları host’a atıp örnek için link verirseniz seviniriz. Saygılar, emeğinize teşekkürler.

  6. # selant | 19 Mayıs 2007, 00:06 Gravatar

    Bu projeyi hayata geçirmek konusunda yardımcı olabilir misiniz ?

  7. # eburhan | 19 Mayıs 2007, 11:22 Gravatar

    @selant
    Yukarıdaki yazı zaten senin yapmak istediğin işlemi anlatıyor. Eğer adım adım uygularsan istediğin sonuca ulaşabilirsin. Biraz gayret ;)

  8. # Umut ÇETİNKAYA | 23 Haziran 2007, 12:25 Gravatar

    @selant kardeşim yazdığım yazıyı biraz geliştirerek senin resimde gösterdiğin olay yapılabilir zaten :) sadece biraz gayret !

  9. # baris | 28 Haziran 2007, 09:58 Gravatar

    bir sorum olacak mesela ben şunu yapmak istiyorum.

    bir form alanım var ilk select box da araba markalarını çekiyorum. markayı seçtiğimde yanda ajax ile markaya ait modelleri listeliyorum. ancak bu bilgileri bir yere post ettiğimde ajax ile aldıgım modellere ait id bilgilerini gonderemiyorum gitmiyor bunun bir çözümü varmı

  10. # gelgir | 25 Temmuz 2007, 03:39 Gravatar

    Süpersin!!!

  11. # Cumhur KORKUT | 01 Ağustos 2007, 21:41 Gravatar

    @baris bir hidden inputu oluşturarak istediğin değeri atayabilirsin.

  12. # Hakan | 03 Ağustos 2007, 14:07 Gravatar

    Hocam ellerine sağlık güzel olmuş ama ben bu bahsettiğin dosyaları(loading.gif , eyceks.js) nereden alıcam

  13. # yakuter | 03 Ağustos 2007, 22:17 Gravatar

    Buradan indirebilirsin

  14. # İİ çalışma | 10 Ağustos 2007, 22:04 Gravatar

    Hocam ellerinize sağlık

  15. # fatih uxun | 27 Kasım 2007, 18:02 Gravatar

    Kaynak kodları veya en azından çalışan halinin demosu yok mu acaba?

  16. # Kudret | 03 Aralık 2007, 23:30 Gravatar

    Ellerinize sağlık ama ben bu kodları çalıştırdığımda hata veriyor.

    onchange() hatası..

    ne yapmalıyım…

  17. # Selim Mavikareli | 05 Aralık 2007, 16:36 Gravatar

    Merhabalar.
    Bunun çalışan bir örneğini indirebileceğimiz bir ye var mı?
    Saygılar.

  18. # komik | 02 Ocak 2008, 20:34 Gravatar

    teşekürler.

  19. # Erdoğan | 03 Ocak 2008, 10:55 Gravatar

    Merhabalar. Emeğinize sağlık hocam çok güzel çalışmalar bunlar. Sizlerin sayesinde çok şeyler öğrenmeye devam ediyoruz. Ancak ben asp ile çalışıyorum. Çalışmalarınızda genelde php iile örnekler vermişsiniz. Asp yede yer verirseniz çok mutlu oluruz. Herkese Kolay Gelsin

  20. # sedat | 24 Ocak 2008, 09:59 Gravatar

    teşekkür ederim akıcı ve açıklayıcı bir makale. Bu arada ajax ile php arasındaki ilişkiyi basit bir çizimle başlatırsanız çok daha faydalı olacağını düşünüyorum. Puanlama makalesinde dosyaların resimleri vardı. Ona benzer bir şelik oluşturup dosyalar arasındaki ilişkiyi çizerseniz bence tam verim alınmış olacaktır.

  21. # Kanber | 25 Ocak 2008, 03:54 Gravatar

    sanırım kodlarda küçük bir sorun var.

    js ile formdan gelen verileri yakalıyoruz ama

    var takimlar = document.form1.takimlar.value;

    değeri boş dönüyor.

    benzer şekilde
    var takimlar = document.getElementById(’takimlar’).value;

    denediğimde ise seçili olanı değil listede ilk sırada yer alan itemın değeri dönüyor.

    bu sorunu nasıl aşabiliriz.

  22. # serkan | 05 Mart 2008, 13:23 Gravatar

    Gerçekten çok güzel bi çalışma yapmışsınız.Sayenizde ajax hakkında bilgi sahibi olmaya başladım.Yalnız bi yeri anlayamadım.formun action kısmındaki javascript:void(0) ne oluyo pek anlayamadım.Bir de örneklerinizde hep php ile beraber kullanımı anlatılıyor.Birazda asp ile ilgili örnekler verirseniz daha ii olur bence::) Teşekkürler

  23. # eser | 06 Mart 2008, 15:56 Gravatar

    @serkan arkadaşıma aynen katılıyorum. birazda asp olaydı iyi olurdu :)
    çalışmalarınızda başarılar dilerim

  24. # donkişot | 29 Mart 2008, 16:33 Gravatar

    merhaba arkadaşlar… Siteniz ve ders anlatımlarınızdan dolayı çok teşekkür ediyorum..

    bu anlatılan konuyu ben uygulamaya çalıştım fakat sürekli hata veriyor.. Yapılmış bir örneği varsa ve yüklerseniz belki ordan daha iyi anlayabilirim..

    Başarılar dilerim çalışmalarınızda

  25. # arslan | 06 Mayıs 2008, 19:41 Gravatar

    merhaba ajax hakkında faydalı bir kaynak oluyor hepinize teşekkür ederim.
    eyceks kütüphaneside türkçe karakter sorunu ile karşılaşıyorum karakter setleri uygun olmasına rağmen neden olabilir acaba

  26. # Mert | 16 Temmuz 2008, 14:38 Gravatar

    Arkadaşlar Yazılanları Teker Teker Okudum ve Denilenleri Yaptım Hatta Kopyala Yapıştır Yaptım Ama Olmadı Bir Sorun Oldu.Yardım Eder Misiniz.Hangi Dosyada Hangi Kodlar Olucak :S

  27. # cem | 05 Ağustos 2008, 16:22 Gravatar

    kod çalışmadı

  28. # etiket | 13 Ağustos 2008, 00:53 Gravatar

    Güzel bir yazı teşekkür ederiz.

Yorum yazın

sayfa sayacı