Evet mi Hayır mı?

AJAX & Hazır Kütüphaneler eburhan

3. cevapKaydet.php dosyasını hazırlayalım

Şimdi de cevapKaydet.php dosyasındaki kodlara göz gezdirelim. Bu dosyaya POST edilen 2 tane bilgi var. Bunlar soru no ve cevap türü bilgileri. Soru no hangi sorunun oylandığını bildirirken, cevap türü de kişinin Evet cevabını mı yoksa Hayır cevabını mı verdiğini öğrenmemizi sağlıyor.

PHP:
  1. <?php
  2.     // Gelen bilgileri al
  3.     $cevapTuru = $_POST['cevapTuru'];
  4.     $soruNo = $_POST['soruNo'];
  5.    
  6.     // Veritabanına bağlan
  7.     $baglan = mysql_connect("localhost", "kullanici", "parola");
  8.               mysql_select_db("veritabani", $baglan);
  9.               mysql_query("SET NAMES 'utf8'");
  10.    
  11.     // Oylamayı cevap türüne göre kaydet
  12.     if( $cevapTuru == 'e' )
  13.     {
  14.         $sql = "UPDATE oylama SET evet = evet + 1 WHERE no = $soruNo";
  15.         $sorgu = mysql_query($sql, $baglan);
  16.     }
  17.     else
  18.     {
  19.         $sql = "UPDATE oylama SET hayir = hayir + 1 WHERE no = $soruNo";
  20.         $sorgu = mysql_query($sql, $baglan);   
  21.     }
  22. ?>

3. ve 4. satırda bu dosyaya gönderilen bilgileri alıyoruz. 7. satırdan itibaren veritabanına bağlanıyoruz. 12. satırdan sonra ise cevap türüne göre veritabanındaki "oylama" tablosunu güncelliyoruz. Eğer kullanıcı Evet linkine tıkladıysa, sorunun tablodaki Evet alanını 1 arttırıyoruz. Aynı şekilde Hayır linkine tıklandıysa da tablodaki Hayır alanını 1 arttırıyoruz.

cevapAl.php ve cevapKaydet.php dosyalarımız hazır olduğuna göre geriye bir tek index.php dosyamızı hazırlamak kaldı. Fakat ondan önce alttaki şemaya bir gözatalım isterseniz.

Uygulama şeması
Resim 4

Şemaya bakarsak, index.php dosyasından cevapKaydet.php dosyasına $soruNo ve $cevapTuru olmak üzere iki değişken gönderiyoruz. Bu değişkenleri alan cevapKaydet.php dosyası, gerekli işlemleri yaparak bilgileri veritabanına kayıt ediyor. Bu işlemlerden sonra index.php dosyasına geri dönmüyor. O yüzden şemadaki oklar tek yönlü.

index.php dosyasından cevapAl.php dosyasına ise yalnızca $soruNo değişkenini gönderiyoruz. Bu değişkenden gelen veriye göre cevapAl.php dosyası veritabanından gerekli bilgileri alıyor. Bilgileri biçimlendirdikten sonra çıktıyı index.php dosyasına geri dönderiyor.

Artık yaptığımız oylama sistemi iyice kafanızda canlanmış olmalı. Hadi son olarak index.php dosyasını da hazırlayalım.

Sayfalar: 1 2 3

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

Etiketler:

1 oy2 oy3 oy4 oy5 oy (32 oy, ortalama 3.97) 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

15 yorum var

  1. # ismailaltuntas | 10 Haziran 2007, 10:11 Gravatar

    Güzel makale olmuş tebrikler…

  2. # eburhan | 10 Haziran 2007, 10:22 Gravatar

    Bu uygulamayı temel alarak şunun gibi web sitelerini rahatça yapabilirsiniz.

    http://www.evet-hayir.com/

    http://www.left-or-right.com/

  3. # grkn | 10 Haziran 2007, 11:06 Gravatar

    başarılı bir makele eburhan, teşekkürler ve tebrikler.

  4. # Erdem | 10 Haziran 2007, 19:03 Gravatar

    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.

  5. # bgoral | 11 Haziran 2007, 10:23 Gravatar

    Merhaba,
    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 :) 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ı.

    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.

  6. # eburhan | 11 Haziran 2007, 13:10 Gravatar

    @bgoral
    Bu tartışmalar için zaten bir “tartışma grubu” mevcut. Buradan ulaşabilirsin. Bu grupta istediğin gibi tartışma açabilirsin.

  7. # orhan | 12 Haziran 2007, 15:30 Gravatar

    Ellerine sağlık @eburhan, gerçekten bu kadar teorik bilginin üzerine enfes bir uygulama olmuş, tebrikler.

  8. # Murat | 13 Haziran 2007, 10:50 Gravatar

    Erdem’in sordugu soruyu soracaktim ben de. Bu ajax ile birden fazla oylanabilen anketi nasıl gösteririz?

  9. # Hasan | 15 Haziran 2007, 21:45 Gravatar

    Tşekkürler gerçekten güzel bir makale olmuş.

  10. # Ahmet Eyüp ARTIR | 17 Haziran 2007, 12:59 Gravatar

    elinize sağlık , çok faydalı olacağına eminim…

  11. # yakuter | 17 Haziran 2007, 17:20 Gravatar

    @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 ;)

  12. # Harun | 26 Haziran 2007, 19:40 Gravatar

    Güzel makale elinize sağlık

  13. # Emre | 10 Ekim 2007, 12:45 Gravatar

    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 :)

  14. # Yusuf Bekar | 28 Aralık 2007, 19:34 Gravatar

    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

  15. # Cem | 20 Şubat 2008, 22:52 Gravatar

    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

Yorum yazın

sayfa sayacı