سلام به همه دوستان عزيز
در اين مقاله مي خواهم يك اسكريپت php رو بهتون نشون بدم كه باهاش مي شه يه قسمت راي گيري براي سايتمون درست كنيم (مثل همون چيزي كه توي صفحه اول همين جا هست.)
براي اين كار ما فقط از يك جدول استفاده مي كنيم ،
جدول را مطابق اين دستورات مي سازيم :
خوب حالا يه توضيح كوچولو در مورد جدول مي دم :
اين جدول 4 تا فيلد داره كه id فيلد Auto increament است و topic سوال راي گيري و گزينه هاي راي گيري است همچنين در فيلد type مشخص میکنیم که این رکورد سوال ما است یا یکی از گزینه های ما است ... براي سوال راي گيري كه فقط يكي است در اين فيلد q قرار مي دهيم و براي گزينه ها s قرار مي دهيم .
فیلد count هم كه تعداد راي براي هر گزينه را در خود نگه مي دارد .
چرا از دو جدول استفاده نكرديم ؟
براي اين كه سرعت دستيابي به يك جدول خيلي بيشتر از دو جدول است .
خوب بريم سراغ كد :
راهنمايي :
اين كد را در فايلي با هر نامي كه خواستيد و با پسوند php ذخيره كنيد و اجرا نماييد .
در
به جای temp نام ديتا بيس خود را بنويسيد.
در
به جاي root نام كاربري ديتا بيس خود را بنويسيد.
در
به جاي My Password كلمه عبور ديتا بيس را بنويسيد .
-------------------------------
و اما بررسي اين كد :
اساس كار اين كد به اين صورت است كه تعداد آراي هر گزينه را بر تعداد كل آرا تقسيم مي كند و در صد آن را به دست مي آورد و بر اساس آن با استفاده از تگ <table> براي هر گزينه يك جدول ترسيم مي كند .
در خط 7 و 8 اتصال به هاست و انتخاب ديتا بيس را انجام مي دهيم.
از خط 10 تا 42 مربوط به ثبت آرا و نمايش نتايج مي باشد.
بقيه آنها هم براي ترسيم Radio Button ها و دكمه راي و ... است
بررسي ثبت راي ...
در خط 11 چك مي كنيم كه action ست شده است يا نه اگر ست شده باشد وارد شرط مي شويم
در خط 13 در صورتي شرط برقرار مي شود كه كاربر دكمه ارسال راي را كليك كرده باشد . پس از ورود به اين شرط در خط 15 poll_id كه كد منحصر به فرد هر گزينه است را به دست مي آوريم در صورتي كه poll_id مقداري نداشته باشد به اين معني است كه كاربر گزينه اي را انتخاب نكرده است پس ما فقط نتايج آرا را به او نمايش مي دهيم حالا فرض بر اين كه كاربر گزينه اي را انتخاب كرده باشد ... در خط 18 و 19 يك query را نوشته و اجرا مي كنيم ؛ اين query يك واحد به راي انتخاب شده اضافه مي كند .
خط 22 تا 41 مربوط به نمايش نتايج آرا است در اين قسمت همان طور كه گفته شد براي نمايش درصد هر گزينه تعداد آراي مربوط به آن را بر كل تعداد آرا تقسيم مي كنيم و در 100 ضرب مي كنيم و آنها را زير هم چاپ مي كنيم .
در اين مقاله مي خواهم يك اسكريپت 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 ضرب مي كنيم و آنها را زير هم چاپ مي كنيم .
نوشته شده توسط ممل هکر در سه شنبه بیست و سوم خرداد 1385 ساعت 10:48 | لینک ثابت |


