Türkiye Online Medya Araştırması
Profili Göster

ColdFusion MX ile Kullanıcı Anketi Oluşturmak

Yılmaz Uğurlu Tarih: 11/12/2004 Yorum: 0 adet

Okunma : 1159 Tutanlar: Bu yazıyı 0 kişi tuttu.

İnternette dolaşırken bir çok sayfada görürüz, bir çok konuda ziyaretçilerin belli konular hakkındaki görüşlerini yansıtan oylamalar vardır. İşte bu uygulamada da bu tarz bir anket çalışmasının nasıl hazırlandığını anlatacağız. Uygulamamız bittiğinde aşağıda gördüğünüz tarzda bir anket uygulaması hazırlamış olacağız.

1- Öncelikle uygulamamızda kullanacağımız verileri tutacağımız veri tabanını oluşturalım. Ben kendim uygulamayı hazırlarken veritabanı olarak Mysql'i kullandım. Ancak MS Access versiyonunuda kaynak kodlara ekledim. Veritabanımızındaki kullanacağımız tablonun adını cf_anket olarak belirledik ve bu tabloda kullanmak için 9 sütun oluşturduk. İlk 4 sütun anketimize verilen oyların sayısal değerlerini tutan secim1-secim2-secim3-secim4 adlı sütunlar (veri tipi sayı), sonraki 4 sütun ankette ki seçeneklerimizi barındıran secenek1-secenek2-senecek3-secenek4 (veri tipi metin)adlı sütunlar vesonuncu sütunda anketimizdeki sorumuzu barındırmakta olan baslik (veri tipi metin, Mysql için text MS Access için not) adlı sütun bulunmakta.

Daha sonra ColdFusion MX'in Administrator panelinden yeni bir veri kaynağı (data source) ekleyelim. Admin sayfasını açalım ve sol tarafraki linklerden Data & Services altındaki Data Sources linkini seçelim. Daha sonra sağ bölümde açılan alandaki Add New Data Source altındaki forma veri kaynağımızın adını ve tipini belirtelim.

mmistanbul.com

Ben Mysql veri tabanı kullandığım için Driver alanında seçimimi bu şekilde yaptım. Eğer siz MS Access kullanacaksanız buradaki seçiminizi açılır listeden Microsoft Access yapmalısınız.

Add butonuna tıkladığınızda veri kaynağının eklendiğini sayfanın alt bölümündeki Connected Data Sources bölümünde görebilirsiniz.

mmistanbul.com

Veri tabanımızı oluşturduğumuza ve ColdFusion'a tanıttığımıza göre uygulama için kodlarımız yazmaya başlayabiliriz.

2- Öncelikle anketimizdeki soruları gösterecek ve oy vermemizi sağlayacak anket.cfm isimli sayfamızı oluşturacağız.

İlk olarak kullanıcının daha önce ankete oy verip vermediğini kontrol edelim.

<cfif not isdefined("COOKIE.anket")>

Bu satır kullanıcı ankete oy verdikten sonra oluşturulan çerezin kullanıcı bilgisayarında olup olmadığını kontrol eder. Yok ise bir kullanıcıya göstereceğimiz verileri veritabanımızdan alalım.

<cfquery name="Secenekler" datasource="anket">
  SELECT secenek1, secenek2, secenek3, secenek4, baslik
  FROM cf_anket
</cfquery>

Anketimizin içerdiği soruyu ve seçeneklerimizi veri tabanından çektikten sonra kullanıcıların oy verebilmesi için bir form oluşturarak bilgileri bu formun içinde gösterlim.

 <form action="anket_isle.cfm" method="post">
  <table width="300" border="0" >
  <tr>
  <td colspan="2"><strong>Anket</strong></td>
  </tr>
  <cfoutput>
  <tr>
  <td colspan="2" >#Secenekler.baslik#</td>
  </tr>
  <tr>
  <td width="170" >#Secenekler.secenek1#</td>
  <td width="130"><input name="secim" type="radio" 
  value="1"></td>
  </tr>
  <tr>
  <td >#Secenekler.secenek2#</td>
  <td><input name="secim" type="radio" value="2"></td>
  </tr>
  <tr>
  <td class="secenek">#Secenekler.secenek3#</td>
  <td><input name="secim" type="radio" value="3"></td>
  </tr>
  <tr>
  <td >#Secenekler.secenek4#</td>
  <td><input name="secim" type="radio" value="4"></td>
  </tr>
  <tr>
  <td colspan="2"><input name="Submit" type="submit" 
  value="gönder"></td>
  </tr>
  </cfoutput>
  </table> 
  </form> 

Bir form oluşturduk ve içine her satıra bir secenek ve karşısına bir radio buton gelecek çekilde tablomuzu olşturduk. Kullanıcı bu radio butonlardan birini seçerek anketimize oy verecek. radio butonlarımızın hepsinin ismi aynı secim ancak değerleri yani value özellikleri veri tabanından sectiğimiz seceneğe göre değişmekte. secenek1'e karşılık gelen radio butonun value değeri 1, ve diğerleri içinde bu şekilde devam ediyor. kullanıcı secenek1'e ait radio butonu seçim oy verdiğinde veritabanında ki secenek1'e ait secim1 değeri 1 artacaktır.

Kullanıcı eğer daha önce anketimize oy vermiş ise direkt olarak kullanıcıya anketimizin sonuçlarının görüntülendiği sayfayı gösterlim

<cfelse>
  <cfinclude template="anket_sonuc.cfm">
</cfif>

3- Kullanıcı seçeneklerden birini işaretleyerek gönder butonuna tıkladığında formumuz sayfayı anketisle.cfm sayfasına yönlendirmekte. Bu sayfada kullanıcının işaretlediği seçeneğe karşılık gelen değer bir arttırılır. Örnek olarak, kullanıcı secenek4'e ait radio butonu işaretledi ve gönder butonuna tıkladı, anketisle.cfm sayfası kullanıcın bu seçimini algılayarak sececek4'e ait secim4 değerini 1 arttıracaktır.

<cfquery datasource="anket">
UPDATE cf_anket SET 
<cfif FORM.secim is 1>
secim1 = secim1 + 1
<cfelseif FORM.secim is 2>
secim2 = secim2 + 1
<cfelseif FORM.secim is 3>
secim3 = secim3 + 1
<cfelseif FORM.secim is 4>
secim4 = secim4 + 1
</cfif> 
</cfquery>

Basit bir cfif yapısı ile kullanıcının seçimine karşılık gelen sütununun değeri bir arttırılır. Daha sonra kullnıcının anketimize oy verdiğini anlamak ve sonuçların şişmesini önlemek amacıyla kullanıcının bilgisayarında bir çerez oluştururuz.

<cfcookie name="anket" value="#Now()#" expires="7">

Daha sonrada kullanıcıyı anketin sonuçlarının görüntülendiği anket_sonuc.cfm isimli sayfaya yönlendiririz.

<cflocation url="anket_sonuc.cfm"> 

4- Son olarak anket sonuçlarımızın görüntülendiği anket_sonuc.cfm isimli sayfayı oluşturacağız. Bu sayfadaki kodumuz veritabanındaki seçeneklere ait değerleri çekerek toplam oy miktarını hesaplamakta. Daha sonra her seceneğim bu toplam içindeki yüzdelik dilimini hesaplamak için seçeneklerdeki sayısal değerleri 100 ile çarpıp ardından toplam değerine bölerek sonuca ulaşmakta. Basit bir matamatiksel hesap yapacağız.

<cfquery name="anketGoster" datasource="anket">
SELECT * FROM cf_anket
</cfquery>
<!--- anketteki toplam oy sayısını buluruz --->
<cfset toplam = anketGoster.secim1+anketGoster.secim2+anketGoster.
secim3+anketGoster.secim4>
<!--- daha sonra her seçeneğe ait yüzdeyi hesaplarız --->
<cfset secim1yuzde = (anketGoster.secim1 * 100) / toplam>
<cfset secim2yuzde = (anketGoster.secim2 * 100) / toplam>
<cfset secim3yuzde = (anketGoster.secim3 * 100) / toplam>
<cfset secim4yuzde = (anketGoster.secim4 * 100) / toplam> 

Seçeneklermize ait yüzdeleri birer birer hesapladıktan sonra kullanıcıya anketimizin sonuçlarını küçük bir grafiği bar olarak kullanarak gösterlim.

 <cfoutput>
        <table width="350" border="0">
        <tr>
        <td colspan="2"><strong>Anket</strong></td>
        </tr>
        <tr>
        <td colspan="2">#anketGoster.baslik#</td>
        </tr>
        <tr>
        <td width="170">#anketGoster.secenek1#</td>
        <td width="170"><img src="bar.gif" width="#secim1yuzde#"  height="10"> <span class="prg">%  #Round(secim1yuzde)#</span></td>
        </tr>
        <tr>
        <td>#anketGoster.secenek2#</td>
        <td><img src="bar.gif" width="#secim2yuzde#" height="10"> % #Round(secim2yuzde)#</td>
        </tr>
        <tr>
        <td>#anketGoster.secenek3#</td>
        <td><img src="bar.gif" width="#secim3yuzde#" height="10"> % #Round(secim3yuzde)#</td>
        </tr>
        <tr>
        <td>#anketGoster.secenek4#</td>
        <td><img src="bar.gif" width="#secim4yuzde#" height="10">  <span class="prg">% #Round(secim4yuzde)#</span></td>
        </tr>
        <tr>
        <td colspan="2" ><div align="right">Toplam  <strong>#toplam#</strong> oy  kullanılmıştır.</div></td>
        </tr>
        </table>
        </cfoutput>

Burada kullandığımız Round(secim3Yuzde) şeklindeki ifade toplamda kalanlı çıkan sonucu yuvarlak olarak göstermemizi sağlamakta. Örneğin secim3Yuzde 'nin değeri 15,3347 ise bu değeri 15 olarak göstermekte kullanmış olduğumuz Round() fonksiyonu.

Bu şekilde anket uygulamamızı bitirmiş olduk. Tekrar görüşmek dileğiyle güle güle kullannın :)

Kaynak Doyası : Anket uygulamasının kaynak kodlarını buradan sağlayabilirsiniz.

Yazar Hakkında :

Yılmaz UĞURLU 1982 yılında Bartın'da doğdu. İlk ve orta öğrenimini Karadeniz Ereğli'de, Üniversite eğitimini Muğla Üniversitesi Kamu Yönetimi bölümünde tamamladı. Web programlama alanında uzman olan Yılmaz UĞURLU asp, jsp, php ve cfml uygulama dillerini etkin bir biçimde kullanabilmekte. Şu an İzmir'de Me-dialog Reklam ajansında Web Uygulamaları Geliştiricisi olarak çalışmaktadır.

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.


yeni üyelik | şifremi unuttum

aç-kapa Toplantı Özgür Yazılım ve Linux Günleri '10

Özgür Yazılım ve Linux Günleri '10

İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü ve Linux Kullanıcıları Derneği'nin 9 yıldır düzenlemekte oldukları etkinlikler bu yıl `Özgür Y...
Kategori: Toplantı

aç-kapa Yarışma 3. Uluslararası Ekslibris Yarışması: İstanbul 2010

3. Uluslararası Ekslibris Yarışması: İstanbul 2010

İstanbul Ekslibris Dernegi, Feyziye Mektepleri Vakfı ve Işık Üniversitesi, kitaplar için mülkiyet işareti olarak kabul edilen ve üzerinde estetik dege...
Kategori: Yarışma

aç-kapa Konferans Yeni Medya ve Etkileşim Konferansı 2010 - Marmara Üniversitesi

Yeni Medya ve Etkileşim Konferansı 2010 - Marmara Üniversitesi

Generally speaking, the term "New" brought about debates. We try to open up and elucidate the term "New" along with "Interact...
Kategori: Konferans

aç-kapa Konferans 3. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2010: e-Öğrenme

3. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2010: e-Öğrenme

Konferans ile ilgili ayrıntılı bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz: http://www.futurelearning.org.tr/katilim_cagrisitr.pdf ...
Kategori: Konferans

aç-kapa Toplantı IV. ANKARA TASARIM GÜNLERİ 2010

IV. ANKARA TASARIM GÜNLERİ 2010

IV. Ankara Tasarım Günleri, seminerleri, sunumları, etkinlik tarihleri boyunca gezilebilecek tasarım sergileri, video art gösterimleri, çeşitli worksh...
Kategori: Toplantı

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 55 (50 kayıtlı, 5 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

...

Blog Bölümü Blogevi.com'a Taşınıyor

Selam arkadaşlar MMIstanbul'da , tasarımcı ve programcıların blog yazılarını "feedleyerek" MMIstanbul okurlarını MMIstanbul dışın ...

7.500'üncü üyemiz Cem Koç!

Neler Yapılabilir?

500 Hatası Hakkında!

Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)

coldfusion mysql ubuntu
 
sponsor adobe istanbul