النتائج 1 إلى 15 من 15

الموضوع: $درس[1] عمل نظام تصويت متكامل

  1. #1
    عضو فعال
    تاريخ التسجيل
    Nov 2002
    المشاركات
    1,602

    $درس[1] عمل نظام تصويت متكامل



    السلام عليكم
    ارى ان الكثير يسئل عن عمل نظام تصويت
    فقمت ببرمجة نظام تصويت
    لكتابت هذا الدرس لعله يفيدكم.

    سوف اقوم بتبسيط الطريقة حتى يسهل فهمها وطبعا بعدها نضيف اى شىء
    وسوف يتم شرح عمل نظام تصويت متكامل php +mysql
    نبدأ بأسم الله

    اولا
    فلننشأ جدول في قاعدة البيانات لتخزين التصويت
    كود PHP:
    CREATE TABLE `pool` (
      `
    poolidint(10unsigned NOT NULL auto_increment,
      `
    by_uservarchar(100NOT NULL default '',
      `
    questionvarchar(100NOT NULL default '',
      `
    answerstext NOT NULL,
      `
    vote_numbertext NOT NULL,
      `
    start_dateint(14NOT NULL default '0',
      
    PRIMARY KEY  (`poolid`)
    ); 
    العامود الاول poolid لتخزين ايد التصويت لسهولة جلبه والتعامل مع التصويت الخ..
    وجلعنا نوعه int لتخزين الاعداد الصحيحه و atuo_increment لنجعل قيمته تكراريه.

    العامود by_user لتخزين اسم الذى اضاف التصويت.

    العامود question لتخزين سؤال التصويت.

    العامود answers وقد جلعنا نوعه text لاننا سوف نخزن جميع اجوبة السؤال للتصويت وسوف نفصلها بأي علامه.

    العامودvote_number وقد جلعنا نوعه text لاننا سوف نخزن عدد الاصوات لكل جواب وسوف نفصلها بأي علامه.

    العامود start_date لتخزين تاريخ ووقت اضافة التصويت
    وجلعنا نوعه int لتخزين التاريخ والوقت عن طريق دالة الـphp الدالة time();

    واخيرا PRIMARY KEY (`poolid` المفتاح الاساسي العامود poolid


    والان فلننشأ ملف جديد
    ونسميه pool.php

    وطبعا اولا سوف نحتاج للاتصال بقاعدة البيانات
    ولا اظن انه يخفي على احدكم هذا

    كود PHP:
    mysql_connect("localhost","user","1234");
    mysql_select_db("test"); 
    طبعا مع وضع التعديلات بما يناسبك

    والان سوف نعمل فورم للمستخدم
    لادخال عدد الاجوبه التى يريدها للتصويت
    وطبعا نستطيع عمل هذه في نفس الفورم الذى به السؤال
    لاكن لتوضيح الطريقه وحتى يسهل فهمها
    كود PHP:
    if ($_GET['poolgo']=="showtools") {

    echo 
    '<form action="poll.php?poolgo=last" method="POST">';

    echo 
    '<br><td><br>عدد الأجوبة <input type="text" name="numvote" size="2" maxlength="2" tabindex="1" value="4"></td>';

    echo 
    '<br><input type="submit" value="ارسال">
    <input type=reset name=reset value="إعادة تعيين">&nbsp; </form>'
    ;

    فائدة
    if ($_GET['poolgo']=="showtools")
    بهذا سوف نختصر على نفسنا الكثير
    بدل عمل كل خطوه في ملف
    سوف نعمل كل الخطوات بملف واحد
    وطريقة عمله
    التأكد من العنوان
    مثلا اذا كان
    poll.php?poolgo=showtools
    ينفذ الخطوه هذه
    اما
    poll.php?poolgo=ttt
    ينفذ الخطوه ttt
    وهكذا

    بالنسبه
    echo '<form action="poll.php?poolgo=last" method="POST">';
    poll.php?poolgo=last
    هنا حدد الخطوه التى سيذهب لها بعد هذه
    method="POST"
    هنا حددنا الطريقة وهي POST
    وكما يمكننا استخدام ال GET
    لاخذ المتغيرات ولاخذها من العنوان الى الخطوه التى تليها

    echo '<br><td><br>عدد الأجوبة <input type="text" name="numvote" size="2" maxlength="2" tabindex="1" value="4"></td>';
    هنا عملنا مربع ليستطيع تحديد عدد الاجوبه التي يرديها للتصويت

    value="4"
    وحددنا القيمة التى ستظهر في المربع تلقائيا وهي 4

    واسم هذا المربع
    numvote

    echo '<br><input type="submit" value="ارسال">
    <input type=reset name=reset value="إعادة تعيين">&nbsp; </form>';
    وهذا طبعا لعمل ارسال للمتغيرات والانتقال للخطوة التى تليها
    ووضع نهاية للفورم


    ---
    والان الخطوه الثانيه

    كود PHP:
    if ($_GET['poolgo']=="last") {

    echo 
    '<form action="poll.php?poolgo=add" method="POST">';
    echo 
    '<tr><td>اسمك :&nbsp; <input type="text" name="name" size="35"></td></tr>';
    echo 
    '<tr><td>السؤال :&nbsp; <input type="text" name="question" size="35"></td></tr>';
    for(
    $i=1$i<=$_POST['numvote']; $i++) {
    echo 
    '<br><tr>
        <td><b>الجوابالـ'
    .$i.'
          :</b></td>
        <td><input type="text" name="answers[]" size="40" maxlength="85" tabindex="1"></td>
    </tr>
    <input type="hidden" value="0" name="number_vote[]">
    <br>'
    ;
    }
    echo 
    '<br><input type="submit" value="ارسال">
    <input type=reset name=reset value="إعادة تعيين">&nbsp; </form>'
    ;


    if ($_GET['poolgo']=="last")
    شرحت عمله سابقا

    echo '<form action="poll.php?poolgo=add" method="POST">';
    شرحت عمله سابقا

    echo '<tr><td>اسمك :&nbsp; <input type="text" name="name" size="35"></td></tr>';
    نضع مربع لاسم من وضع التصويت
    واسمه
    name

    echo '<tr><td>السؤال :&nbsp; <input type="text" name="question" size="35"></td></tr>';
    نضع مربع للسؤال
    واسمه
    question

    والان عن طريق الدالة for();

    نعمل تكرار
    للاجوبة
    for($i=1; $i<=$_POST['numvote']; $i++) {
    نحدد قيمة المتغير
    $i=1
    بانه يساوي واحد

    $i<=$_POST['numvote'];
    وبأن
    المتغير $i اصغر من او يساوي عدد الاجوبة التى حددها المستخدم $_POST['numvote']
    ولو نلاحظ ان numvote هو اسم المربع الذى وضعناه لتحديد عدد الاجوبة
    وقد جلبناه بال $_POST
    واخيرا
    $i++
    عمل تكرار للمتغير $i
    وفي الدالة for
    نضع الاجواب حتى يتكرر
    echo '<br><tr>
    <td><b>الجوابالـ'.$i.'
    :</b></td>
    <td><input type="text" name="answers[]" size="40" maxlength="85" tabindex="1"></td>
    </tr>
    <input type="hidden" value="0" name="number_vote[]">
    <br>';


    <input type="text" name="answers[]" size="40" maxlength="85" tabindex="1">
    لنلاحظ ان وضعنا اسم هذا المربع
    answers[]
    والان مافائدة
    []
    لكي يتعرف الphp عليه على انه مصفوفه
    لانه يحتوي على اكثر من جواب .

    <input type="hidden" value="0" name="number_vote[]">
    type="hidden"
    وهنا وضعنا معلومه خفيه
    لانه المستخدم لايستطيع ان يراها او يعدل عليها
    ونلاحظ ايظا ان اسمه
    number_vote[]
    حتى يتعرف عليه كمصفوفه
    ووضعناه في الدالة for();
    مع الجواب
    حتى يتكرر عدد التصويتات لكل جواب
    فيكون
    مساوي للعدد الاجوبة
    ولاحظنا ان حددنا قيمته
    value="0"
    تساوي صفر
    حتى يكون عدد التصويتات لكل جواب
    يساوي صفر


    echo '<br><input type="submit" value="ارسال">
    <input type=reset name=reset value="إعادة تعيين">&nbsp; </form>';
    وهذا طبعا لعمل ارسال للمتغيرات والانتقال للخطوة التى تليها
    ووضع نهاية للفورم

    -----
    والان الخطوه الثالثه

    كود PHP:
    if ($_GET['poolgo']=="add") {

    $answers=implode("|||"$_POST['answers']);
    $number_vote=implode("|||"$_POST['number_vote']);

    mysql_query("insert into pool
    (poolid,by_user,question,answers,vote_number,start_date)
    VALUES (null,'
    $_POST[name]','$_POST[question]','$answers','$number_vote',"time().")");



    if ($_GET['poolgo']=="add")
    تم شرحه مسبقا

    $answers=implode("|||", $_POST['answers']);
    عن طريق الدالة implode();
    نفصل الاجوبة(عناصر المصفوفة) عن بعض بعلامة |||
    للمزيد حول الدالة
    implode();
    http://php.net/implode


    $number_vote=implode("|||", $_POST['number_vote']);
    وايظا بنفس الطريقة نفصل عدد التصويتات لكل جواب


    mysql_query("insert into pool
    (poolid,by_user,question,answers,vote_number,start_date)
    VALUES (null,'$_POST[name]','$_POST[question]','$answers','$number_vote',". time().")");
    والان نضيف المعلومات الى قاعدة البيانات
    عن طريق الدالة mysql_query

    نلاحظ انا جلعنا القيمة التى تخزن بالعامود poolid
    هي null
    لاكن سوف ايد للتصويت
    يعني اخر ايد لتصويت
    زائد واحد
    حسب الخصائص التى منحناه اياها عند اضافة الجدول

    وايظا جلعنا القيمة التى تخزن بالعامود start_date
    هي الدالة
    ". time()."
    وعلمها
    اضافة عدد الثواني منذ بداية عصر اليونيكس
    اى منذ 1/1/1970 والساعه الثانية عشر
    للمزيد حول هذه الدالة
    http://php.net/time

    ومابقى اظنه واضح.


    -------
    الخطوه الرابعه

    عرض التصويت
    كود PHP:
    if ($_GET['poolgo']=="pool") {
    $ballot=mysql_query("select * from pool
    order by poolid DESC limit 1"
    );
    $vbulletinarab mysql_fetch_array($ballot);
    echo 
    '<form action="poll.php?poolgo=addvote" method="POST">';
    echo 
    '<input type="hidden" value="'.$vbulletinarab[poolid].'" name="poolid">';


    $answers explode("|||"$vbulletinarab['answers']);
    $number_vote explode("|||"$vbulletinarab['vote_number']);
    echo 
    $vbulletinarab['question']."<br>";
    foreach (
    $answers as $showanswers => $answersvalue) {

    @
    $vote_percent=$number_vote[$showanswers]/array_sum($number_vote);
    $percent=sprintf("%.2f%%", ($vote_percent 100));
    echo 
    '<input type="radio" value="'.$showanswers.'" name="showanswers"><tr><td class="tdgold2" width="70%">'.$answersvalue .'&nbsp; '.$percent.'</td>
    <td class="tdgold2" width="30%"> عدد الاصوات :'
    $number_vote[$showanswers].'</td>';
    }
    echo 
    $vbulletinarab['quizzing']."<br>";
    echo 
    '<br><input type="submit" value="ارسال">
    <input type=reset name=reset value="إعادة تعيين">&nbsp; </form>'
    ;

    اغلب مافي هذه الخطوه تم شرحه مسبقا
    @$vote_percent=$number_vote[$showanswers]/array_sum($number_vote);
    $percent=sprintf("%.2f%%", ($vote_percent * 100));
    قمنا هنا بتقسيم عدد اصوات كل جواب على المجموع الكلي للاصوات
    وعن طريق الداله sprintf();
    قمنا باظهار النسبة المئوية
    لكل جواب.
    -------
    الخطوه الخامسه
    اضافة صوت
    كود PHP:
    if ($_GET['poolgo']=="addvote") {
    $poolid=$_POST['poolid'];
    $showanswers=$_POST['showanswers'];
    $ballot=mysql_query("select * from pool
    where poolid='
    $poolid'");
    $vbulletinarab mysql_fetch_array($ballot);
    $number_votes explode("|||"$vbulletinarab['vote_number']);
    if (
    array_key_exists($showanswers$number_votes)) {
    $number_votes[$showanswers]=($number_votes[$showanswers])+(1);
    }
    $number_vote=implode("|||"$number_votes);


    $addballot=mysql_query("update pool set vote_number='$number_vote'  where poolid='$poolid'")Or Die(Mysql_error());


    نعمل استعلام يجلب فيه التصويت المراد
    وبنفس الطريقه التى تم شرحها مسبقا
    ولاضافة واحد الى الاجابه التى حددها المستخدم
    ومن ثم عمل update
    وعمل الزيادة بعدد الاصوات انتهى.

    لعرض التصويت
    poll.php?poolgo=pool

    لاضافة تصويت
    poll.php?poolgo=showtools


    وملف العمل الذى قمنا به بالمرفق.

    والسلام عليكم
    all-the-vb
    http://vbulletin-arab.com





    الملفات المرفقة الملفات المرفقة
    • نوع الملف: zip poll.zip‏ (1.2 كيلوبايت, 742 مشاهدات)
    __________________
    المغردون العرب
    all-the-vb غير متواجد حالياً


  2. #2
    عضو فعال
    تاريخ التسجيل
    Feb 2002
    المشاركات
    1,247


    جزاك الله خير ياعدام

    درس رائع وشرح ولا أحلى من كذا .. الله يوفقك ياشيخ





    __________________
    ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
    فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
    Dr.Server غير متواجد حالياً



  3. بعد اذنك نسخة من الدرس لقسم تطوير المواقع





    __________________
    أخوكم ابو مشعل
    ملاحظات لتنظيم المنتدى:
    http://www.swalif.net/softs/showthread.php?s=&threadid=42612
    ---------------
    ابو مشعل غير متواجد حالياً

  4. #4

    تاريخ التسجيل
    May 2001
    المشاركات
    3,294


    يعطيك الف عافيه تفصيل و شرح وافي تسلم يمينك





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور
    Net Hunter غير متواجد حالياً

  5. #5
    عضو فعال
    تاريخ التسجيل
    Jun 2003
    المشاركات
    1,545


    السلام عليكم

    شرح ولا أروع

    جزاك الله خير


    وعساك على القوه


    تحيتي لك





    d7me4ever غير متواجد حالياً

  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2002
    المشاركات
    2,289


    جزاك الله خيرا





    المهمة9 غير متواجد حالياً

  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2003
    المشاركات
    746


    درس رائع جدا جزاك الله الف خير أتمنى الا تنقطع مثل هذه الدروس التطبيقية المفيدة





    aldosari غير متواجد حالياً

  8. #8


    شرحت فأبدعت ...الله يعطيك الف عافية



    ما اقول الا رووووووووووووووووووووووح الله يكتب لك في كل خظوة سلامة

    قل آمين





    __________________
    ::. اخوكم في الله ما يعرف يوقع .::
    the developer غير متواجد حالياً

  9. #9
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2003
    المشاركات
    2,047


    رد مقتبس من aldosari
    درس رائع جدا جزاك الله الف خير أتمنى الا تنقطع مثل هذه الدروس التطبيقية المفيدة






    __________________
    -{Only God Can Judge Me}-
    القانون فوق الجميع و الجميع يموت بالجوع
    Dr-dre67 غير متواجد حالياً

  10. #10
    عضو سوبر نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    870


    اكثر من رائع
    فعلا درس اكثر من رائع
    الله لايحرمنا من دروسك
    الله يوفقك

    ملاحظة اخوي عدام ياريت تضيفني مسنجر
    ابيك بشيء ضروري من زمان والحمدلله حصلتك
    bandr_33@hotmail.com





    __________________
    يقولون العرب صدر الشمالي مايضيق بساع ,,
    وانا اقول الصدور اليوم مـاعادت شمـاليــــــــه ,,
    الشمال ويب غير متواجد حالياً

  11. #11
    عضو نشيط
    تاريخ التسجيل
    Feb 2004
    المشاركات
    49


    بارك الله فيك درس واضح ومميز ومفيد






    __________________
    s__500@hotmail.com
    sea غير متواجد حالياً

  12. #12
    عضو فعال
    تاريخ التسجيل
    Oct 2003
    المشاركات
    1,264


    رد مقتبس من sea
    بارك الله فيك درس واضح ومميز ومفيد
    جزاك الله خير والله يحفظك





    __________________
    (( لا تنسي ذكر الله ))
    ليس الجمال بأثوبا تزيننا ان الجمال جمال العلم والادب
    المشوار غير متواجد حالياً

  13. #13


    رد مقتبس من the developer
    شرحت فأبدعت ...الله يعطيك الف عافية



    ما اقول الا رووووووووووووووووووووووح الله يكتب لك في كل خظوة سلامة

    قل آمين






    بو مبارك غير متواجد حالياً

  14. #14
    عضو فعال
    تاريخ التسجيل
    Feb 2003
    المشاركات
    1,308


    مشكور يا عدام





    fnan4arab غير متواجد حالياً

  15. #15
    عضو فعال
    تاريخ التسجيل
    Nov 2002
    المشاركات
    1,602


    Dr.Server

    العفو عزيزى وبارك الله فيك

    أبومشعل

    تسلم يالغالي وماتحتاج أذن


    Net Hunter

    الله يسلمك شكرا لمرورك.


    d7me4ever

    بارك الله فيك
    وتسلم عالرد

    المهمة9

    بارك الله فيك


    aldosari

    بارك الله فيك, وان شاء الله ماتنقطع وحاظرين للطيبين


    the developer
    اميــن وياك ان شاء الله
    بارك الله فيك.

    Dr-dre67
    حياك الله


    majhol1.net

    بارك الله فيك
    تمت الاضافه.

    sea

    تسلم عزيزى على مرورك


    المشوار

    العفو عزيزى


    lebanon

    وين ماتبين
    العفو


    fnan4arab
    العفو فنان





    __________________
    المغردون العرب
    all-the-vb غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض