نمایش نتایج 1 تا 30 از 30

نام تاپیک: آموزش :: ساخت سیستم نظرسنجی

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    آموزش :: ساخت سیستم نظرسنجی

    کلیه حقوق این مظلب متعلق به سایت www.Barnamenevis.org میباشد .
    نقل از نوشته های این مقاله منوط به ذکر نام منبع و نویسنده آن است.

    با سلام و با اجازه اساتید .
    حتما برای شما پیش آمده باشد که بخواهید یک سیستم نظرسنجی در سایت خود قرار دهید اما شاید وقت ساخت این سیستم را نداشته باشید . به همین خاطر من آموزش ساخت این سیستم را برای شما آماده کردم که امیدوارم مفید واقع بشه :

    ابتدا از ساخت بانک اطلاعاتی و جداول مورد نیاز برای این سیستم شروع میکنیم .
    برای ساخت این سیستم از سه جدول استفاده میکنیم :

    1 - PollQuestions : این جدول شامل فیلدهای زیر میباشد و برای ذخیره سوالات نظر سنجی استفاده میشود :



    PollID : این فیلد برای ذخیره ID مورد نظر استفاده میشود و آن را به صورت کلید اصلی تعریف میکنیم . Identity این فیلد را نیز Yes میکنیم .
    AddedDate : تاریخ اضافه شدن سوال را مشخص میکند .
    AddedBy : مشخص میکند این سوال توسط چه کسی ایجاد شده و این برای سایتهایی که چند مدیر دارند بسیار مناسب خواهد بود .
    QuestionText : همانطور که از نام فیلد مشخص میباشد برای ذخیره سوال نظر سنجی استفاده میشود .
    IsCurrent : مشخص میکند که آیا این نظرسنجی به عنوان نظرسنجی فعال انتخاب شود یا خیر .
    IsArchived : که برای آرشیو کردن نظرسنجی ها به کار میرود
    ArchivedDate : که تاریخ آرشیو شدن را نشان میدهد .

    بر این اساس نظرسنجی فعال خواهد بود که Iscurrent آن برابر 1 و IsArchived آن برابر 0 باشد.

    2 - PollOptions : برای ذخیره Option های نظرسنجی به کار میرود و شامل فیلدهای زیر میباشد :




    OptionID : برای ذخیره ID انتخاب ها به کار میرود ( Identity برابر 1 انتخاب شود - کلید اصلی )
    AddedDate : تاریخ اضافه شدن .
    AddedBy : فرد ایجاد کننده .
    ID : PollID نظرسنجی که انتخاب ها مربوط به آن است .
    OptionText : متن انتخاب ها .
    Votes : تعداد رای های مربوط به این انتخاب .

    3 - PollResult : این جدول برای ذخیره کاربرانی که به نظرسنجی ها رای میدهند استفاده میشود که شامل فیلدهای زیر میباشد :




    ID : Poll ID نظرسنجی فعال
    PollChoice : گزینه ای که توسط کاربر انتخاب شده .
    MemberID : نام کاربری یا ID کاربر .

    این جدول برای این استفاده میشود که بتوانیم تشخیص دهیم که چه کسی به این نظر سنجی رای داده است تا اگر خواست برای بار دوم رای دهد از این عمل وی جلوگیری کنیم . اگر میخواهید فقط کاربران عضو رای دهند میتوانید از MemberID برای ذخیره آنها استفاده کنید و اگر میخواهید کاربران مهمان هم رای دهند میتوانید از IP آنها استفاده کنید یا اینکه به جای استفاده از این جدول میتوانید از کوکی ها استفاده کنید ( که البته من این مورد رو پیشنهاد نمیکنم )
    میرویم سر اصل مطلب :
    ------------------------

    * ذخیره نظر سنجی ها در بانک *
    با توجه به اینکه عمل ذخیره کردن سوالات و انتخاب ها با چند دستور ساده Insert انجام میشود از این قسمت میگذریم و به مرحله بعد میریم ( البته اگر در این قسمت مشکلی داشتید سوال کنید ) Stored Procedure های ذخیره در فایل Sample موجود است که میتوانید از آنها استفاده کنید .
    توجه : مقدار فیلد Votes در جدول PollOptions باید در زمان ایجاد انتخاب ها 0 باشد .

    ------------------------

    ** بازیابی نظرسنجی از بانک و قرار دادن آن در صفحه **
    من برای این کار از کنترل PollControl استفاده کردم این ابزار کاملا رایگان میباشد اما قبل از استفاده از آن به بررسی خصوصیات این کنترل میپردازم :
    Properties :
    Canvote : اگر مقدار آن را True کنید کنترل به مود انتخاب میرود و کاربر میتواند یکی از گزینه ها را انتخاب کند و اگر مقدار آن را False کنید به مود نمایش میرود .

    PollQuestion : سوالی که به کاربر نشان داده میشود .

    CSSCaption : کلاس استایل شیت مربوط به Caption و سوال را مشخص میکند
    CssPollClass : کلاس مورد استفاده کنترل را مشخص میکند .
    ImagesFolder : پوشه حاوی تصاویر مربوط به این کنترل را مشخص میکند .
    VoteCaption : متنی را نشان میدهد که تعداد کل آراء را نشان میدهد به عنوان مثال : ( تعداد آراء : )

    همچنین این کنترل یک Event به نام CastVote نیز دارد که وقتی کاربر دکمه تایید را انتخاب میکند رخ میدهد .

    اما برای استفاده از این کنترل فایل PollControl.Dll و فولدر Image مربوط و همچنین فایل های CSS مربوط به این کنترل را به پروژه اضافه میکنیم و از تگ زیر برای استفاده از آن استفاده میکنیم :


    <%@ Register Assembly="PollControl" Namespace="EccSoft.Web.UI" TagPrefix="cc1" %>

    و یک نمونه از این کنترل را در صفحه قرار میدیم :


    <cc1:PollControl id="Pollcontrol1" runat="server" csscaption="PollCaption" cssclass="Normal"
    csspollclass="PollBack" votescaption="تعداد آراء :"
    width="206px" style="font-family: tahoma" Font-Names="tahoma"></cc1:PollControl>


    امیدوارم که خسته نشده باشید .
    حالا میرسیم به جایی که باید نظرسنجی را از بانک بخونیم و در این کنترل قرار دهید .
    برای اینکه ما باید نظرسنجی فعال را از بانک بگیریم و در کنترل قرار دهیم :
    در Page_Load کدهای زیر را وارد کنید :

    Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
    Dim cmd As SqlCommand
    Dim cmdtext As String
    Dim obj As SqlDataReader

    If Not Me.Page.IsPostBack Then
    Pollcontrol1.CanVote = True
    ' Add Question Text To Poll Control
    cmdtext = "select QuestionText from PollQuestions where Iscurrent=1 and Isarchived=0"
    cmd = New SqlCommand(cmdtext, connection)
    connection.Open()
    Pollcontrol1.PollQuestion = cmd.ExecuteScalar
    connection.Close()


    cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)"
    cmd = New SqlCommand(cmdtext, connection)
    connection.Open()
    obj = cmd.ExecuteReader
    ' Add Options To Poll Control :
    While obj.Read
    Pollcontrol1.AddPollAnswer(obj("pollID"), obj("optionID"), obj("optionText"), obj("votes"))
    End While
    connection.Close()
    obj.Close()

    End If


    خوب ما در اینجا متن سوال و option های آن را از جداول PollQuestion و PollOptions گرفتیم و در کنترل Poll Control قرار دادیم . یک بار برنامه را در مرورگر اجرا کنید :




    همانطور که ملاحظه میکنید سوال و option های نظر سنجی با موفقیت در کنترل قرار گرفته اند.
    حالا باید ایونت مربوط به کلیک کاربر را بنویسیم :
    کدهای زیر را به ایونت Pollcontrol1_CastVote اضافه کنید ( به علت کمبود وقت من بدون چک کردن MemberID انتخاب کاربر را در بانک ذخیره میکنم )


    ' Update PollOptions Without Check MemberID
    Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
    Dim com As New SqlCommand("update pollOptions set answercount=answercount+'1' where OptionID=@answerID", connection)
    connection.Open()
    com.Parameters.Add("@optionID", SqlDbType.Int).Value = Int(AnswerId)
    com.ExecuteNonQuery()
    connection.Close()
    Response.Redirect("result.aspx")


    شما میتوانید از کوکی ، IP و یا کدکاربری و .. برای تشخیص کاربر رای دهنده استفاده کنید.
    خوب ما در اینجا به مقدار فیلد Votes یکی اضافه میکنیم و سپس برای نمایش نتیجه به صفحه Result میرویم .
    اما در Page_load صفحه Result کدهای زیر را مینویسیم :


    Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
    Dim cmd As SqlCommand
    Dim cmdtext As String
    Dim obj As SqlDataReader

    If Not Me.Page.IsPostBack Then
    Pollcontrol1.CanVote = False
    cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)"
    cmd = New SqlCommand(cmdtext, connection)
    connection.Open()
    obj = cmd.ExecuteReader
    ' Add Options To Poll Control :
    While obj.Read
    Pollcontrol1.AddPollAnswer(obj("pollID"), obj("optionID"), obj("optionText"), obj("votes"))
    End While
    connection.Close()
    obj.Close()

    End If


    اگر دقت کرده باشید ما در اینجا Canvatoes را برایر False قرار دادیم تا به مد نمایش نتایج برویم .
    نتیجه را در مرورگر خود ببینید :




    خوب در اینجا کار به پایان رسیده و شما با موفقیت یک سیستم نظر سنجی ساختید .

    موفق و پیروز باشید .
    نویسنده : رامین احمدی

    ::::::::::: لطفا برای تشکر به جای ایجاد پست جدید از دکمه تشکر استفاده نمایید :::::::::::::

    دانلود سورس :
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •