Free Web Hosting | free host | Free Web Space | BlueHost Review
 

برای سایت خود یک سیستم رای گیری بسازید

در اين مقاله مي خواهم يك اسكريپت php رو بهتون نشون بدم كه باهاش مي شه يه قسمت راي گيري براي سايتمون درست كنيم (مثل همون چيزي كه توي صفحه اول همين جا هست.)

براي اين كار ما فقط از يك جدول استفاده مي كنيم ،
جدول را مطابق اين دستورات مي سازيم :

CREATE TABLE `poll` (
  `id` int(11) NOT NULL auto_increment,
  `topic` text NOT NULL,
  `type` char(1) NOT NULL default '',
  `count` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM COMMENT='My Web Poll' AUTO_INCREMENT=14 ;

خوب حالا يه توضيح كوچولو در مورد جدول مي دم :
اين جدول 4 تا فيلد داره كه id فيلد Auto increament است و topic سوال راي گيري و گزينه هاي راي گيري است همچنين در فيلد type مشخص میکنیم که این رکورد سوال ما است یا یکی از گزینه های ما است ... براي سوال راي گيري كه فقط يكي است در اين فيلد q قرار مي دهيم و براي گزينه ها s قرار مي دهيم .
فیلد count هم كه تعداد راي براي هر گزينه را در خود نگه مي دارد .

Question چرا از دو جدول استفاده نكرديم ؟ Idea براي اين كه سرعت دستيابي به يك جدول خيلي بيشتر از دو جدول است .

خوب بريم سراغ كد :

<?php
$host = "localhost";
$db_name = "temp";
$db_user = "root";
$db_pass = "MyPassword";

$link = mysql_connect($host,$db_user,$db_pass) or die(musql_error());   
   mysql_select_db($db_name,$link) or die("Can not select Data base!");

//Check Action Set ...
if(isset($_GET['action']))
{
   if($_GET['action'] == 'vote')
   {
      $poll_id = (isset($_POST['webpoll'])) ?  $_POST['webpoll'] : '';
      if($poll_id != '')
      {
         $sql = "UPDATE `poll` SET `count`=count+1 where `id`='".$poll_id."' AND `type`='s'";
         $result = mysql_query($sql) or die(mysql_error());
      }
   }
      $count = 0;
      $sql = "SELECT * FROM `poll` WHERE `type`='s'";
      $result = mysql_query($sql) or die(mysql_error());
      $n = mysql_num_rows($result);
      for ($i=0;$i<$n;$i++)
      {
         $count += mysql_result($result,$i,3);
      };
      if($count == 0){$count = 1;};
      $output = 'The Result of Vote<br><br>';
      for ($i=0;$i<$n;$i++)
      {
         $num = mysql_result($result,$i,3) * 100;
         $num /= $count;
         $num = (int) $num;
         $output .= mysql_result($result,$i,1).' '.$num.'%<table border="0" width="'.$num.'%" height="20" bgcolor="#0000FF"><tr><td></td></tr></table>';
      };

      $output .= '<br>The webPoll Result From '.$count.' Votes<br><a target="_self" href="'.$_SERVER['PHP_SELF'].'" >[Back]</a>';
}
else

{
//Web Poll...

$sql = "SELECT * FROM `poll` WHERE `type`='s'";
$poll = mysql_query($sql) or die(mysql_error());

$topic_sql = "SELECT `topic` FROM `poll` WHERE `type`='q'";
$poll_result = mysql_query($topic_sql) or die(mysql_error());   
$poll_question = mysql_result($poll_result,0,0);

$poll_total = mysql_num_rows($poll);

$output = '<p align="center" dir="ltr">'.$poll_question.'</p><form method="POST" action="?action=vote">';

$vote_count = 0;

for ($i = 0; $i < $poll_total; $i++)
{
   $vote_count += mysql_result($poll,$i,3);
   
   $poll_value = mysql_result($poll,$i,0);
   $poll_name = mysql_result($poll,$i,1);
   
   $output .='<input type="radio" value="'.$poll_value.'" name="webpoll" style="CURSOR:Hand;" >'.$poll_name.'<br>';

}

$output .='<input type="submit" value="vote" name="submit_poll" > <br><br><a title="View Poll Result" target="_self" href="?action=show_result" >Total Votes : '.$vote_count.'</a>';

}//End of Action Set

//----------------------------------------
//Print the output

print($output);

?>


راهنمايي :
اين كد را در فايلي با هر نامي كه خواستيد و با پسوند php ذخيره كنيد و اجرا نماييد .

در

$db_name = "temp";


به جای temp نام ديتا بيس خود را بنويسيد.

در

$db_user = "root";


به جاي root نام كاربري ديتا بيس خود را بنويسيد.

در

$db_pass = "MyPassword";


به جاي My Password كلمه عبور ديتا بيس را بنويسيد .


-------------------------------
و اما بررسي اين كد :
اساس كار اين كد به اين صورت است كه تعداد آراي هر گزينه را بر تعداد كل آرا تقسيم مي كند و در صد آن را به دست مي آورد و بر اساس آن با استفاده از تگ <table> براي هر گزينه يك جدول ترسيم مي كند .

در خط 7 و 8 اتصال به هاست و انتخاب ديتا بيس را انجام مي دهيم.
از خط 10 تا 42 مربوط به ثبت آرا و نمايش نتايج مي باشد.
بقيه آنها هم براي ترسيم Radio Button ها و دكمه راي و ... است

بررسي ثبت راي ...
در خط 11 چك مي كنيم كه action ست شده است يا نه اگر ست شده باشد وارد شرط مي شويم
در خط 13 در صورتي شرط برقرار مي شود كه كاربر دكمه ارسال راي را كليك كرده باشد . پس از ورود به اين شرط در خط 15 poll_id كه كد منحصر به فرد هر گزينه است را به دست مي آوريم در صورتي كه poll_id مقداري نداشته باشد به اين معني است كه كاربر گزينه اي را انتخاب نكرده است پس ما فقط نتايج آرا را به او نمايش مي دهيم حالا فرض بر اين كه كاربر گزينه اي را انتخاب كرده باشد ... در خط 18 و 19 يك query را نوشته و اجرا مي كنيم ؛ اين query يك واحد به راي انتخاب شده اضافه مي كند .

خط 22 تا 41 مربوط به نمايش نتايج آرا است در اين قسمت همان طور كه گفته شد براي نمايش درصد هر گزينه تعداد آراي مربوط به آن را بر كل تعداد آرا تقسيم مي كنيم و در 100 ضرب مي كنيم و آنها را زير هم چاپ مي كنيم .

Question چرا فقط از يك دستور print استفاده كرديم ؟
Idea براي اين كه در برنامه هر چه كمتر از اين دستور استفاده كنيم سرعت آن بالاتر است.

اميدوارم كه اين آموزش به درد شما عزيزان بخورد.
موفق باشيد. Wink
 

شروع PHP
قسمت اول آموزش PHP
قسمت دوم آموزش PHP
قسمت سوم آموزش PHP
ارسال ایمیل با PHP
برای سایت خود یک قسمت ارتباط با ما بسازید
برای سایت خود یک سیستم رای گیری بسازید
معرفی چند اسکریپت
 

 

 
 
 
 

 

  :: 20 متری

 
All rights reserved   ? Copyright 2006  20metri.150m.com , Inc.
 Designer : Mohsen hosseinkhani  

 

 

 

 

 

تماس با ما::

::درباره من

  :: صفحه اصلی

 

 

جستجو

Google


در
وب
در اين سايت

لوگوی سايت


همه چیز در باره طراحی صفحات وب

 

منوی کاربری

     

با ما در تماس باشید
m20metri@yahoo.com

لینک دوستان

همه چیز...!

بلاگ كده

طراحي صفحات وب

انجمن مهندسان مکانیک ایران

شادمهر عقیلی

وبلاگ تخصصی موبایل

شادمهر هک پرسپولیس

 

لوگوی دوستان

 
?
?
پاشاست