|
در اين مقاله مي خواهم يك
اسكريپت 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 هم كه تعداد راي براي هر گزينه را در خود نگه
مي دارد .
چرا از دو جدول استفاده نكرديم ؟
براي اين كه سرعت دستيابي به يك جدول خيلي بيشتر از دو
جدول است .
خوب بريم سراغ كد :
<?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
ضرب مي كنيم و آنها را زير هم چاپ مي كنيم .
چرا فقط از يك دستور print استفاده كرديم ؟
براي اين كه در برنامه هر چه كمتر از اين دستور استفاده
كنيم سرعت آن بالاتر است.
اميدوارم كه اين آموزش به درد شما عزيزان بخورد.
موفق باشيد.

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