| ||
|
Система за анкети за вашият сайт и админ панел![]() Сега нека започваме с анкетата. Първото нещо, което Ви трябва е SQL структрурата на БД. Ето я и нея: CREATE TABLE `poll` ( `id` int(10) NOT NULL auto_increment, `vapros` varchar(250) COLLATE utf8_general_ci NOT NULL default '', `podrejdane` int(1) NOT NULL default '1', `status` int(1) NOT NULL default '1', PRIMARY KEY (`id`) ); CREATE TABLE `otgovori` ( `id` int(10) NOT NULL auto_increment, `id_poll` int(10) NOT NULL, `otgovor` varchar(250) COLLATE utf8_general_ci NOT NULL default '', `broi` int(5) NOT NULL default '0', PRIMARY KEY (`id`) ); CREATE TABLE `ips` ( `id` int(10) NOT NULL, `ip` varchar(25) COLLATE utf8_general_ci NOT NULL default '', PRIMARY KEY (`id`) ); След като сте създали BD и сте създали таблицата следва да създаден файла за връзка с BD. Него ще го кръстим config_poll.php Ето го и него: <?php $host="localhost"; $dbusername="root"; $dbpassword=""; $db="poll"; $db_conn = mysql_connect("$host", "$dbusername", "$dbpassword") or die("Не мога да се свържа с BD!"); $conn=mysql_select_db("$db", $db_conn) or die("Не мога да се свържа с BD!"); $chars = "SET NAMES cp1251"; mysql_query($chars); $pass_admin = "123"; ?> Така мисля, че ви е ясно как да го попълните. Само долу където е променливата $pass_admin променете 123 на паролата, с която желаете да влизате в админ панела. Нека сега продължим с кода. Създавате си един файл function_poll.php В него сложете следният код: <?php function poll($promenliva) { // създаваме функция $ip = getenv("REMOTE_ADDR"); include("config_poll.php"); // добавяме файла за връзка с BD if (isset($promenliva) && is_numeric($promenliva)) { // проверяваме дали сме задали стойност на функцията и ако сме задали дали е число $poll_here = mysql_num_rows(mysql_query("SELECT * FROM poll WHERE id = '$promenliva' LIMIT 1")); // взимаме дадената анкета if ($poll_here > 0) { // ако анкетата съществува нея ще изкарваме в страницата $poll_query = mysql_query("SELECT * FROM poll WHERE id = '$promenliva' LIMIT 1"); $poll = mysql_fetch_array($poll_query); $poll_broi = mysql_num_rows($poll_query); } else { // ако не съществува ще изкараме най-новата добавена анкета $poll_query = mysql_query("SELECT * FROM poll ORDER BY id DESC LIMIT 1"); $poll = mysql_fetch_array($poll_query); $poll_broi = mysql_num_rows($poll_query); } } else { // ако не сме избрали точно дадена анкета ще вземеме последната добавена $poll_query = mysql_query("SELECT * FROM poll ORDER BY id DESC LIMIT 1"); $poll = mysql_fetch_array($poll_query); $poll_broi = mysql_num_rows($poll_query); } if ($poll_broi > 0) { // ако изобщо съществува анкета if ($poll['status'] == 1) { // проверяваме дали сме включили анкетата $dali_si_glasuval = mysql_num_rows(mysql_query("SELECT * FROM ips WHERE ip = '$ip' AND id = '".$poll['id']."'")); if ($dali_si_glasuval == 0) { // проверяваме дали потребителя е гласувал. Ако не е му позволяваме да гласува if (isset($_POST['submit']) && isset($_POST['vote']) && is_numeric($_POST['vote'])) { // малко защити ![]() $vote = $_POST['vote']; $dali_taq_anketa = mysql_fetch_array(mysql_query("SELECT * FROM otgovori WHERE id = '$vote' LIMIT 1")); if ($dali_taq_anketa['id_poll'] == $poll['id']) { // проверяваме дали отговора е точно към тази анкета mysql_query("UPDATE otgovori SET broi = broi + 1 WHERE id = '$vote' LIMIT 1"); mysql_query("INSERT INTO ips (id,ip) VALUES ('".$poll['id']."','$ip')"); if ($poll['podrejdane'] == 1) { $order_by = "ORDER BY id ASC"; } // ако е избран тип стандартно подреждане elseif ($poll['podrejdane'] == 2) { $order_by = "ORDER BY broi DESC"; } // ако е избран тип подреждане по гласове $query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' $order_by"); $query = mysql_query("SELECT SUM(broi) as kolko FROM otgovori WHERE id_poll = '".$poll['id']."' GROUP BY id_poll"); $votes = mysql_fetch_array($query); $votes = $votes['kolko']; ?> <b><?=$poll['vapros']?></b><br><br> <table border="0"> <?php // изкарваме резултатите от анкетата while ($row_otgovori = mysql_fetch_array($query_otgovori)) { $procent = $row_otgovori['broi'] * (100/$votes); // смятаме процентите $procent = round($procent); // закръгляме ги ?> <tr><td><?=$row_otgovori['otgovor']?></td><td><img src="bar_left.bmp" height="9" border="0"><img src="vote.bmp" width="<?=$procent?>" height="9" border="0"><img src="bar_right.bmp" height="9" border="0"></td><td>Гласове: <?=$row_otgovori['broi']?> (<?=$procent?>%)</td></tr> <?php } ?> </table><br> Общо гласове: <b><?=$votes?></b> <?php } } else { $query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' ORDER BY id ASC"); ?> <b><?=$poll['vapros']?></b><br><br> <form action="" method="post"> <?php // тук извеждаме формата за гласуване с възможните отговори while ($row_otgovori = mysql_fetch_array($query_otgovori)) { ?> <input type="radio" name="vote" value="<?=$row_otgovori['id']?>"> <?=$row_otgovori['otgovor']?><br> <?php } ?> <input type="submit" name="submit" value="Гласувай"> </form> <?php } } else { // ако е гласувал му извеждаме резултатите if ($poll['podrejdane'] == 1) { $order_by = "ORDER BY id ASC"; } // ако е избран тип стандартно подреждане elseif ($poll['podrejdane'] == 2) { $order_by = "ORDER BY broi DESC"; } // ако е избран тип подреждане по гласове $query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' $order_by"); $query = mysql_query("SELECT SUM(broi) as kolko FROM otgovori WHERE id_poll = '".$poll['id']."' GROUP BY id_poll"); $votes = mysql_fetch_array($query); $votes = $votes['kolko']; ?> <b><?=$poll['vapros']?></b><br><br> <table border="0"> <?php // изкарваме резултатите от анкетата while ($row_otgovori = mysql_fetch_array($query_otgovori)) { $procent = $row_otgovori['broi'] * (100/$votes); // смятаме процентите $procent = round($procent); // закръгляме ги ?> <tr><td><?=$row_otgovori['otgovor']?></td><td><img src="bar_left.bmp" height="9" border="0"><img src="vote.bmp" width="<?=$procent?>" height="9" border="0"><img src="bar_right.bmp" height="9" border="0"></td><td>Гласове: <?=$row_otgovori['broi']?> (<?=$procent?>%)</td></tr> <?php } ?> </table><br> Общо гласове: <b><?=$votes?></b> <?php } } else { // ако е изключена ще показваме само резултатите без да даваме право да гласуват if ($poll['podrejdane'] == 1) { $order_by = "ORDER BY id ASC"; } // ако е избран тип стандартно подреждане elseif ($poll['podrejdane'] == 2) { $order_by = "ORDER BY broi DESC"; } // ако е избран тип подреждане по гласове $query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' $order_by"); $query = mysql_query("SELECT SUM(broi) as kolko FROM otgovori WHERE id_poll = '".$poll['id']."' GROUP BY id_poll"); $votes = mysql_fetch_array($query); $votes = $votes['kolko']; ?> <b><?=$poll['vapros']?></b><br><br> <table border="0"> <?php // изкарваме резултатите от анкетата while ($row_otgovori = mysql_fetch_array($query_otgovori)) { $procent = $row_otgovori['broi'] * (100/$votes); // смятаме процентите $procent = round($procent); // закръгляме ги ?> <tr><td><?=$row_otgovori['otgovor']?></td><td><img src="bar_left.bmp" height="9" border="0"><img src="vote.bmp" width="<?=$procent?>" height="9" border="0"><img src="bar_right.bmp" height="9" border="0"></td><td>Гласове: <?=$row_otgovori['broi']?> (<?=$procent?>%)</td></tr> <?php } ?> </table><br> Общо гласове: <b><?=$votes?></b> <?php } } else { echo "Няма такава анкета или все още няма добавени анкети!"; // изкарваме съобщение, че няма такава анкета или изобщо не сме добавили } } ?> Този код може да не го закачате. Разбира се ако желаете да променяте нещо може да го направите стига да знаете как.
|
|