sponsor adobe istanbul
Hatırlatma: MMIstanbul, hem tasarımcılar hem de programcılar içindir. MMIstanbul'u arkadaşlarınıza tavsiye edebilirsiniz.
Profili Göster

ColdFusion MX ile Kullanıcı Anketi Oluşturmak

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

Okunma : 224 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 Konferans 2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08

2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08

2.Ulusal Yazılım Mimarisi Konferansı (UYMK’08), 11 – 12 Eylül 2008 tarihlerinde Ege Üniversitesi Bilgisayar Mühendisliği Bölümü ev sah...
Kategori: Konferans

aç-kapa Sergi İstanbul'da Bir Sürrealist: Salvador Dali

İstanbul'da Bir Sürrealist: Salvador Dali

Picasso ve Rodin’den sonra kimi görmek istersiniz deseler; Salvador Dali listenin ilk başlarında yer almaz mı? Ressam, yazar, bilim adamı, tasar...
Kategori: Sergi

aç-kapa Yarışma İnteraktif Pazarlama Zirvesi ve Grand Interactive Awards

İnteraktif Pazarlama Zirvesi ve Grand Interactive Awards

Türkiye’nin interaktif pazarlama projelerini değerlendiren ilk ve tek yarışması Grand Interactive Awards (GIA) için başvurular 15 Ağustos tarihi...
Kategori: Yarışma

aç-kapa Fuar CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT Bilişim Eurasia bu yıl 7 – 12 Ekim tarihlerinde düzenleniyor Adını dünyanın en büyük on fuarı arasına yazdırarak, İstanbul’u Avrasy...
Kategori: Fuar

aç-kapa Sempozyum Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008), yazılım mühendisliği alanında; kalite deneyimlerini, çözümlerini, yazılım...
Kategori: Sempozyum

üyeler Üyelerimizden...

MMIstanbul Adobe UG MMIstanbul Adobe UG

adobe user group

ColdFusion, Flex, AIR, Flash , PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, INdesign, Connect, Premiere, Soundbooth, Contribute, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfteEffects, Resmi Adobe Kullanıcı Grubu.

stats Kimler Burada? web stats

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

coldfusion mysql ubuntu
 
sponsor adobe istanbul