1

Тема: Опитування на сайті

Може хтось з вас знає як написати скрипт опитування, я дещо сам зліпив......Но хочеться так щоб скрипт був з гарфікою і відображався в процентах......Ось те що я сам писав

файл index.php

<html>
<head>
<title>Голосування</title>
</head>
<body>
<h3>Як вам наш сайт</h3>
<form action="golos.php" method="post">
Погано: <input name="name" type="radio" value="1"><br>
Так собі: <input name="name" type="radio" value="2"><br>
Супер: <input name="name" type="radio" value="3"><br>
<input name="submit" type="submit" value="Голосувати">
</form>
</body>
</html>

Файл golos.php

<? 
if(isset($_POST['name'])){$name = $_POST['name'];}

switch($name)
{
case $name==1:
    $f=@fopen("golos1.txt","a");//відкриваємо файл
    @fwrite($f,"$name \r\n");//записуємо в файл        
break;
case $name==2:
    $f=@fopen("golos2.txt","a");//відкриваємо файл
    @fwrite($f,"$name \r\n");//записуємо в файл        
break;
case $name==3:
    $f=@fopen("golos3.txt","a");//відкриваємо файл
    @fwrite($f,"$name \r\n");//записуємо в файл    
break;        
}

$a1 = @file("golos1.txt");//відкриваємо файл і вертаємо масив
$c1 = count($a1);//підраховуємо кількість елементів в масиві
echo "Погано - $c1 голоса<br>";

$a2 = @file("golos2.txt");//відкриваємо файл і вертаємо масив
$c2 = count($a2);//підраховуємо кількість елементів в масиві
echo "Так собі - $c2 голоса<br>";

$a3 = @file("golos3.txt");//відкриваємо файл і вертаємо масив
$c3 = count($a3);//підраховуємо кількість елементів в масиві
echo "Супер - $c3 голоса<br>";

echo "<br><a href='index.php'>Голосувати ще раз</a>";
?>

2 Востаннє редагувалося Адріян Ігорович (09.02.2013 19:21:13)

Re: Опитування на сайті

А для чого писати все у файли ? Тим більше Ви кожного разу дописуєте одне і те саме.
А щодо відсотків, то робимо наступне:
Припустімо загальна к-сть голосів за всі варіанти - 270
За 1 варіант проголосувало 150 людей,
за 2 - 80, за 3 - 15 і за 4 - 15.
Звідси випливає наступне.
270 - 100%
За формулою

 s=x1*100/x2

де x1 - це к-сть голосів за кожен варіант окремо.(Тобто треба 4 рази обчислювати цю формулу тільки з різним x1)
x2 - сума всіх голосів усіх варіантів.
Отож якщо  270 - це 100%,і за кожен з варіантів віддали таку к-сть голосів яку я описав вище, то вийде наступне:

1 - 55.5%
2 - 29.6%
3 - 5.5%
4 - 9.2%

Якщо це все додати, вийде 99,8%(Справа у тому, що при діленні виходить декілька знаків після коми,а я брав лише один)

3

Re: Опитування на сайті

Про проценти я зрозумів.
А як можна зробити так щоб незаписувати у файли, мені тільки із записом файлів  ідея прийшла в голову. І ще одне, як зробит так щоб із процентами була графіка, наприклад........ коли збільшуються проценти і з процентами збільшується яка небудь графічна полоса

Re: Опитування на сайті

serhi11 написав:

Про проценти я зрозумів.
А як можна зробити так щоб незаписувати у файли, мені тільки із записом файлів  ідея прийшла в голову. І ще одне, як зробит так щоб із процентами була графіка, наприклад........ коли збільшуються проценти і з процентами збільшується яка небудь графічна полоса

Писати можна у БазуДаних, mysql наприклад.
Можна і використовувати файли, але це не практично для такого роду скрипта.
А щодо графіки, то вже хто як придумає.

5 Востаннє редагувалося funivan (10.02.2013 23:02:20)

Re: Опитування на сайті

коли збільшуються проценти і з процентами збільшується яка небудь графічна полоса

У вас є 3 відповіді наприклад, для кожної відповіді у вас є певна кількість голосів наприклад: 20% 30% 50%
Ось ці цифри і пдіставляємо у стиль:

<div style="background:red;width:<?= $ratio?>%;height:10px"></div>

;)

6

Re: Опитування на сайті

Ооо з графікою це просто, я думав це складно зробити.
Дякую вам форумчани за поради, без вас у мене б нічого не вийшло.
Кому цікаво ось мій код, правда я тут зліпив все до купи.

<? 
include("inc.php"); 
if(isset($_POST['radio'])){$id = $_POST['radio'];}

$select = mysql_query("SELECT * FROM oputyvannja WHERE id='$id'");
$row = mysql_fetch_array($select);
$sum = $row['count_vote']+1;

mysql_query("UPDATE oputyvannja SET count_vote='$sum' WHERE id='$id'");

$s = mysql_query("SELECT variant,count_vote FROM oputyvannja WHERE id='1'");
$r = mysql_fetch_array($s);
$a = mysql_query("SELECT variant,count_vote  FROM oputyvannja WHERE id='2'");
$b = mysql_fetch_array($a);
$c = mysql_query("SELECT variant,count_vote FROM oputyvannja WHERE id='3'");
$t = mysql_fetch_array($c);

$zag_sum = $r['count_vote']+$b['count_vote']+$t['count_vote'];

$proc1 = round($r['count_vote']*100/$zag_sum);
echo "<br><strong>$r[variant]:</strong> $proc1%<br>";
echo "<div style='background:#FF9393;width:$proc1%;height:10px'></div>";
$proc2 = round($b['count_vote']*100/$zag_sum);
echo "<strong>$b[variant]:</strong> $proc2%<br>";
echo "<div style='background:#FFDD97;width:$proc2%;height:10px'></div>";
$proc3 = round($t['count_vote']*100/$zag_sum);
echo "<strong>$t[variant]:</strong> $proc3%<br>";
echo "<div style='background:#A0BBFF;width:$proc3%;height:10px'></div>";


echo "<strong>Всього голосів:</strong> $zag_sum";
echo "<div style='background:#D5FFCA;width:$zag_sum%;height:10px'></div><br>";

echo "<br><a href='index.php'>Голосувати ще раз</a><br>";
?>

Re: Опитування на сайті

serhi11, знаю, Ви початківець, та й я не аж профі, але дам Вам декілька порад.

$id = $_POST['radio'];

1) ВСІ, повторюю, всі дані які ідуть від юзера, потрібно жорстко фільтрувати, а то біс його знає, що
нам юні хацкери можуть замість $_POST['radio'] підставити.
2) Всі селекти можна обєднати у один(UNION якщо не помиляюся), але взагалі як я розумію, структура таблиць у вас не дуже продумана. Але тут немає нічого дивного, всі через таке проходять. З часом, Ви будете замислюватися над оптимізацією і тд тп.
3) Раджу Вам зразу працювати над форматуванням коду, оскільки якщо привикнете писати все під одну стоку, то буде біда.

8

Re: Опитування на сайті

Hanter, бачилиб ви код мого сайту, там повна жопа......я вже сам в ньому плутаюся

Re: Опитування на сайті

serhi11 написав:

Hanter, бачилиб ви код мого сайту, там повна жопа......я вже сам в ньому плутаюся

І в мене таке було.
Якщо зараз подивитися на мій код річної давності, то просто буде пц.
Але повторю щераз, кожен через таке проходить.
Просто є такі, що і залишаються у такому стані коли пишуть бидло-код і думають, що вони
тру програмісти, а є інші, які розвиваються далі.

Подякували: Bartash1

10

Re: Опитування на сайті

І в мене таке було.
Якщо зараз подивитися на мій код річної давності, то просто буде пц.
Але повторю щераз, кожен через таке проходить.
Просто є такі, що і залишаються у такому стані коли пишуть бидло-код і думають, що вони
тру програмісти, а є інші, які розвиваються далі.

Hanter, як ви думаєте, варто новачкові вивчати ООП програмування, чи не слід туда носа пхати?

11

Re: Опитування на сайті

хочеться взяти і подарити: Котерова, 2 видання.

pew pew :D
Блоґ

12

Re: Опитування на сайті

serhi11 написав:

Hanter, як ви думаєте, варто новачкові вивчати ООП програмування, чи не слід туда носа пхати?

Новачкові можливо і не варто. Та й радити нічого не можу оскільки
в ООП і сам нуб. Це вам з такимим питання до старших членів цього форуму треба.