Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не работает скрипт опроса на сайте.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
logstar
Отправлено: 14 Сентября, 2012 - 17:08:30
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Приветствую всех.
Помогите пожалуста разобраться. Нужно создать опрос на сайте. Сам начинаю только разбираться в РНР программировании. Нашел скрипт в нете, только он почему то не работает, точнее не учитываются голоса посетителей. Подскажите, что нужно изменить.
Заранее спасибо.

HTML код формы:

<form action="golos.php" method="post">
<center><b>Вопрос</b></center><br>
<input type="Radio" name="answer" value=1>ответ1<br>
<input type="Radio" name="answer" value=2>ответ2<br>
<input type="Radio" name="answer" value=3>ответ3<br>
<input type="Radio" name="answer" value=4>ответ4<br>
<input type="Submit" name="vote" value="">
<input type="Submit" name="result" value="">
</form>

PHP скрипт, (файл golos.php):

<?php
$file = "golos.txt";
$a = file($file);
$i = 1; $fi = Count($a);
$n = 0;
while ($i <= $fi):
$a[$i] = trim(str_replace ("\\n","", $a[$i]));
$n = $n+$a[$i];
$i++;
endwhile;
if ($answer != "") {
echo "<br>Спасибо ваш голос учтен";
$a[$answer]++; $n++;
$rez = "Результаты голосования\n".$a[1].
"\n".$a[2]."\n".$a[3]."\n".$a[4];
$fp = @fopen($file,"w");
if ($fp) { $counter=fputs($fp,$rez); fclose($fp); }
else { echo "Error!"; }
} else { echo "<br>Результаты голосования:"; }
echo "<br>ответ1 <b>".$a[1]."</b>";
echo "<br>ответ2 <b>".$a[2]."</b>";
echo "<br>ответ3 <b>".$a[3]."</b>";
echo "<br>ответ4 <b>".$a[4]."</b>";
echo "<br><br>Всего голосов: ".$n;
?>

Файл с хранением результатов (golos.txt): пустой.
 
 Top
re_nat
Отправлено: 14 Сентября, 2012 - 18:25:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Как практика показывает: скорее всего глобальные переменные отключены. Добавь после "endwhile;" такую строку:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $answer = $_POST['answer'];
 
 Top
GEN_18
Отправлено: 14 Сентября, 2012 - 18:35:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 184
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




logstar знакомый скрипт, сам его использовал )))
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file = "golos.txt";
  3. $a = file($file);
  4. $i = 1; $fi = Count($a);
  5. $n = 0;
  6. while ($i <= $fi):
  7. $a[$i] = trim(str_replace ("\\n","", $a[$i]));
  8. $n = $n+$a[$i];
  9. $i++;
  10. endwhile;
  11. if ($_POST['answer'] != "") {
  12. echo "<br>Спасибо ваш голос учтен";
  13. $a[$answer]++; $n++;
  14. $rez = "Результаты голосования\n".$a[1].
  15. "\n".$a[2]."\n".$a[3]."\n".$a[4];
  16. $fp = @fopen($file,"w");
  17. if ($fp) { $counter=fputs($fp,$rez); fclose($fp); }
  18. else { echo "Error!"; }
  19. } else { echo "<br>Результаты голосования:"; }
  20. echo "<br>ответ1 <b>".$a[1]."</b>";
  21. echo "<br>ответ2 <b>".$a[2]."</b>";
  22. echo "<br>ответ3 <b>".$a[3]."</b>";
  23. echo "<br>ответ4 <b>".$a[4]."</b>";
  24. echo "<br><br>Всего голосов: ".$n;
  25. ?>

(Отредактировано автором: 14 Сентября, 2012 - 18:46:31)



-----
Еще вечера сегодня было завтра.
 
 Top
re_nat
Отправлено: 14 Сентября, 2012 - 18:46:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




GEN_18 пишет:
знакомый скрипт, сам его использовал

Ужс, скрипт - вырвиглазный..
 
 Top
GEN_18
Отправлено: 14 Сентября, 2012 - 18:49:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 184
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




re_nat да это давно было, когда преподу нужно было в курсовой проект какой нибудь опрос засунуть, причем на уроке. чтоб доказать ему, что я разбираюсь в своем коде и что могу с ним что угодно сделать Радость


-----
Еще вечера сегодня было завтра.
 
 Top
Green
Отправлено: 15 Сентября, 2012 - 09:05:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




GEN_18 пишет:
if ($_POST['answer'] != "") {

Это не есть хорошо, так как это есть Notice... Прежде чем проверять значение переменной, нужно проверить, а существует(isset($var)) ли она вообще (касается это чаще всего переменных из суперглобальных массивах).

(Отредактировано автором: 15 Сентября, 2012 - 09:05:43)

 
 Top
re_nat
Отправлено: 15 Сентября, 2012 - 11:55:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Green, глупости. Она всегда будет существовать, т.к. скрипт активируется формой. А вот экранов насовать - это можно, только вопрос автора не в этом заключался.
 
 Top
Green
Отправлено: 15 Сентября, 2012 - 18:46:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




re_nat, да ладно?))) Эта переменная, будет существовать только тогда, когда будет послан POST запрос. Когда форма не заполнена и не отправлена на обработку, при error_reporting = E_ALL мы получим:
Цитата:
Undefined index: answer in ...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB