Asp.net de Anket Yapımı

Bu dersimizde Asp.net MS SQL kullanarak görsel grafikli bir anket yapımı anlatacağım.

Bu dersimizde Asp.net MS SQL kullanarak görsel grafikli bir anket yapımı anlatacağım.

Asp.net Visual Basic'te Anket Yapımı

Yapacağımız anket script'inde seçenekler dahil herşey veritabanından yapılacaktır. Oy kullanan bilgisayarın IP adresi alınıp veritabanına kaydedilir. Bu şekilde bir kişi birden fazla oy kullanamaz.

Önce Anket_db adında MS SQL veritanınımızı oluşturuyoruz.

[*] Anket_ip
[*] Anket_soru_table
[*] Anket_table

adında 3 tane tablo açıyoruz.








Şimdi Anket.aspx sayfamızı oluşturalım:


<%@ Page Language="VB" AutoEventWireup="false" Debug="true" CodeFile="Anket.aspx.vb" Inherits="Anket" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

    <style type="text/css">

        .style1

        {

            width: 259px;

        }

        .style2

        {

            width: 53px;

        }

    </style>

    </head>

<body>

    <form id="form1" method="post" runat="server">

    <div>

    

        <asp:Panel ID="Panel1" runat="server" Width="242px">

        <table width="226" border="0">

  <tr>

    <td width="216">

    

    

   <!-- Bu bölümde Anketimizin Başlığını Veribanından Çekiyoruz. -->

   

   

      <%  Dim conn As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

          Dim save As New Data.SqlClient.SqlCommand("Select * From anket_soru_table", conn)

          conn.Open()

          Dim oku2 As Data.SqlClient.SqlDataReader = save.ExecuteReader

          oku2.Read()

          Dim anketsoru As String = oku2.Item("soru")

          Response.Write(anketsoru)

          conn.Close()

    %>

    </td>

  </tr>

  <tr>

  <td>

  

  

  <!-- Bu Bölümde Anket Seçeneklerini Radio Butonlara Yazdırıyoruz 

  Yine Seçenekleri veritabanından çekiyoruz

  

   -->

   

      <%  Dim baglan As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

          Dim kayit As New Data.SqlClient.SqlCommand("Select * From anket_table", baglan)

        baglan.Open()

        Dim oku As Data.SqlClient.SqlDataReader = kayit.ExecuteReader

    While oku.Read

              Dim anketadlari As String = oku.Item("anket_secenkleri")

    %>



        <input type="radio" name="anket" id="radio" value="<% Response.Write(anketadlari) %>" /><% Response.Write(anketadlari & "</br>")%>

         <%

         End While

         baglan.Close()

             

             %>

          </td>

  </tr>

  <tr>

    <td>

        <asp:Button ID="Button1" runat="server" Text="Oyla" />

      </td>

  </tr>

</table>

        </asp:Panel>

   

    </div>



     

   

    <asp:Panel ID="Panel2" runat="server" Height="17px" Width="244px">

    

    

   <!-- Bu Bölümde Toplam Kayıtı Veritabanından alıp Hesaplıyoruz -->

    

    <%  Dim bag As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

        Dim toplamkayit As New Data.SqlClient.SqlCommand("Select * From anket_table", bag)

        bag.Open()

        Dim toplamoku As Data.SqlClient.SqlDataReader = toplamkayit.ExecuteReader

       

        Dim a As Integer

        While toplamoku.Read

            Dim toplamoy As Integer = toplamoku.Item("anket_oylari")

            a = a + toplamoy

        End While

        bag.Close()

        %>

        

        

        <!-- Bu Bölümdede Kayıtları Sql den Çekip Grafik Ekranı İçin Gerekli Olan

        sayısal verileri çekiyoruz  -->

        

        

         <%

            Dim bag2 As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

             Dim toplamkayit2 As New Data.SqlClient.SqlCommand("Select * From anket_table", bag2)

            bag2.Open()

            Dim toplamoku2 As Data.SqlClient.SqlDataReader = toplamkayit2.ExecuteReader

            While toplamoku2.Read

                 Dim grf As String = toplamoku2.Item("anket_secenkleri")

                 Dim oy As Integer = toplamoku2.Item("anket_oylari")

                 Dim oylar As Integer = 100 / a * oy

                 Dim oyyüzde As  integer = 100 / a * oy * 3

            %>

            <table border="0" 

            style="border-collapse:collapse; height: 24px; width: 646px;">

             <tr>

            <td class="style2"><% Response.Write("<a class=s>" & grf & " : " & "</a>")%></td>

            <td class="style1">

            

            

            <!-- Bu Bölümde de Anketimizin Grafik İşlerimini döngü ile ekrana yazdırıyoruz -->

         

         

            <img src="imgbar.png" width="<% response.write(oyyüzde)%>" height="10" /><% Response.Write("&nbsp;&nbsp;%" & oylar & "&nbsp;&nbsp; <a class=s>Oy:</a>&nbsp;&nbsp;[&nbsp;" & oy & "&nbsp;]")%><br /></td>

             </tr>

            <%

            End While

            bag2.Close()

        %>

</table>





<!-- Toplam Oyu Yazdırıyoruz Ekrana -->





       <% Response.Write("<font color=red><b>Toplam Oy :&nbsp;&nbsp;</b></font>" & a & "</br>")%> 

    </asp:Panel>

   

    </form>

</body>

</html>




Şimdi ise Anket.aspx.vb sayfamızı oluşturalım.





Partial Class Anket

    Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click



        Dim ip As String = Request.ServerVariables("REMOTE_ADDR")

        Dim oy = Request.Form("anket")

        If oy = "" Then

            Response.Write("Boş Seçenek Bırakmayınız")

            Response.End()

        End If

        Dim bag As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

        Dim saves As New Data.SqlClient.SqlCommand("Update anket_table set anket_oylari=anket_oylari+1 where anket_secenkleri='" & oy & "'", bag)

        Dim ipkayit As New Data.SqlClient.SqlCommand("insert into anket_ip(ip) values ('" & ip & "')", bag)

        bag.Open()

        saves.ExecuteNonQuery()

        ipkayit.ExecuteNonQuery()

        bag.Close()

        Panel1.Visible = False

        Panel2.Visible = True

        Dim bagla As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

        Dim ipcont As New Data.SqlClient.SqlCommand("Select * From anket_ip", bagla)

        bagla.Open()

        Dim ipkontrol As Data.SqlClient.SqlDataReader = ipcont.ExecuteReader

        While ipkontrol.Read

            Dim vtip As String = ipkontrol.Item("ip")

            If ip = vtip Then

                Panel1.Visible = False

                Panel2.Visible = True

            Else

                Panel1.Visible = True

                Panel2.Visible = False

            End If

        End While

    End Sub

    

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Panel1.Visible = True

        Panel2.Visible = False

        Dim ip As String = Request.ServerVariables("REMOTE_ADDR")

        Dim bagla As New Data.SqlClient.SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|anket_db.mdf;Integrated Security=True;User Instance=True")

        Dim ipcont As New Data.SqlClient.SqlCommand("Select * From anket_ip", bagla)

        bagla.Open()

        Dim ipkontrol As Data.SqlClient.SqlDataReader = ipcont.ExecuteReader

        While ipkontrol.Read

            Dim vtip As String = ipkontrol.Item("ip")

            If ip = vtip Then

                Panel1.Visible = False

                Panel2.Visible = True

            Else

                Panel1.Visible = True

                Panel2.Visible = False

            End If

        End While

       



    End Sub

End Class





Evet arkadaşlar, kodlar biraz karışık olabilir ama, önemli olan burada mantığını anlamak zaten...

İyi çalışmalar...

  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Eline sağlık arkadaşım, çok güzel anlatmışsın da benim bir sorum olacak: Dim oyyüzde As integer = 100 / a * oy * 3 demişsin ama buradaki 3 ne için onu anlamadım. Ne için 3 ile çarptığını merak ettim. :D
hocam örneğini upload laya bilirmisinz

Yukarı Git