Не работает форма голосования на php

184
01 июня 2018, 07:50

Не могу понять, чего когда голосуешь, не отображается результат?

<?php 
$file = "golos.txt"; 
$a = file($file); 
$i = 1; $fi = Count($a); 
$n = 0; 
while ($i <= $fi): 
$a[$i] = trim(str_replace (" ","", $a[$i])); 
$n = $n+$a[$i]; 
$i++; 
endwhile; 
 
if ($answer != "") {  
echo "<br>Спасибо, Ваше мнение учтено:";  
$a[$answer]++; $n++;  
 
$rez = "Результаты голосования! ".$a[1]. 
" ".$a[2]." ".$a[3]." ".$a[4]; 
$fp = @fopen($file,"w");  
if ($fp) { $counter=fputs($fp,$rez); fclose($fp); }  
else { echo "Произошла ошибка записи результатов!"; } 
 
} else { echo "<br>Результаты голосования"; } 
echo "<br>Круто! - <b>".$a[1]."</b>"; 
echo "<br>Так себе - <b>".$a[2]."</b>"; 
echo "<br>Сойдет - <b>".$a[3]."</b>"; 
echo "<br>Это что-то страшное! - <b>".$a[4]."</b>"; 
echo "<br><br>Всего проголосовало: ".$n; 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
	<meta charset="UTF-8"> 
	<title>Голосование</title> 
</head> 
<body> 
	<FORM METHOD="POST" action="golos.php"> 
<TABLE BORDER=1><TR><TD><TABLE BORDER=0> 
<TR><TD>Ваше мнение о сайте?</TD></TR> 
 
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=1>Круто!</TD></TR> 
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=2>Нормально</TD></TR> 
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=3>Мне все равно</TD></TR> 
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=4>Это что-то страшное!</TD></TR> 
 
<TR><TD><INPUT TYPE=Submit NAME=vote VALUE="отправить"></TD></TR> 
<TR><TD><INPUT TYPE=Submit NAME=result VALUE="смотреть результат"></TD></TR></TABLE></TD></TR></TABLE></FORM>  
</body> 
</html>

Answer 1

У вас пустая переменная $answer. Должно быть $_POST['answer'];

Файл index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Голосование</title>
</head>
<body>
    <form method="POST" action="golos.php">
        <table border="1"><tr><td><table border="0">
            <tr><td>Ваше мнение о сайте?</td></tr>
            <tr><td><input type="radio" name="answer" value="1">Отлично!</td></tr>
            <tr><td><input type="radio" name="answer" value="2">Нормально</td></tr>
            <tr><td><input type="radio" name="answer" value="3">Мне все равно</td></tr>
            <tr><td><input type="radio" name="answer" value="4">Плохо</td></tr>
            <tr><td><input type="Submit" name="vote" value="Отправить"></td></tr>
            <tr><td><input type="Submit" name="result" value="Смотреть результат"></td></tr>
        </table>
    </form>
</body>
</html>

Файл golos.php

<?php
header('Content-type: text/html; charset=utf-8');
if(!empty($_POST)) {
    $answer = $_POST['answer'];
    $file = "golos.txt";
    $a = file($file);
    $i = 1; $fi = Count($a);
    $n = 0;
    while ($i <= $fi):
        $a[$i] = trim(str_replace (" ","", $a[$i]));
        $n = $n+$a[$i];
        $i++;
    endwhile;
    if ($answer != "") {
        echo "<br>Спасибо, Ваше мнение учтено:";
        $a[$answer]++; $n++;
        $rez = "Результаты голосования! ".$a[1].
            " ".$a[2]." ".$a[3]." ".$a[4];
        $fp = @fopen($file,"w");
        if ($fp) { $counter=fputs($fp,$rez); fclose($fp); }
        else { echo "Произошла ошибка записи результатов!"; }
    } else { echo "<br>Результаты голосования"; }
    echo "<br>Круто! - <b>".$a[1]."</b>";
    echo "<br>Так себе - <b>".$a[2]."</b>";
    echo "<br>Сойдет - <b>".$a[3]."</b>";
    echo "<br>Это что-то страшное! - <b>".$a[4]."</b>";
    echo "<br><br>Всего проголосовало: ".$n;
}
?>
READ ALSO
Создать цикл foreach с несколькими элементами

Создать цикл foreach с несколькими элементами

Есть код который выводит значения только одного элемента (wdo_tab_title):

208
Как исправить ошибку Fatal error: Uncaught PDOException: invalid data source name in?

Как исправить ошибку Fatal error: Uncaught PDOException: invalid data source name in?

Нужно подключится к базе данных sqliteВыдает ошибку:

217
Переменные из INPUT в SQL запрос

Переменные из INPUT в SQL запрос

Есть поля Input с типом datatime-local

189
Запись ответов в текстовый файл php

Запись ответов в текстовый файл php

подскажите пожалуйста, что нужно добавить в коде, чтобы в результате анкетирования ответы записывались в текстовый файл?

274