Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Скрипт голосования на сайте.

Сообщения:  [1-5] 

 
 автор: Lotanaen   (26.09.2012 в 11:26)   письмо автору
 
   для: Yuriev   (15.09.2012 в 12:59)
 

ну не со строки GET, так как данные методом POST передаются. Видимо скрипт писался для сервера где register_global включен...

  Ответить  
 
 автор: Митя   (25.09.2012 в 21:35)   письмо автору
 
   для: logstar   (14.09.2012 в 18:29)
 

Я не профи, а только начинающий, Знаю, что с этим вопросом помогу. Спасибо этому форому, много мне пользы дал.
Голосование относится к счётчикам, а счётчики подразделяются по трём категориям: Куки, база данных и файлы. Я плохо разбираюсь, но на файлах покажу. Говорят, что файлами хуже, но с БД не знаком. Ну хоть так !!!

создайте файл с именем 1.php
это файл для голосования и вывода информации:

<li><a href="golos.php?book=01">ответ 1, голосовать</a>
<li><a href="golos.php?book=02">ответ 2, голосовать</a>
<li><a href="golos.php?book=03">ответ 3, голосовать</a>
<li><a href="golos.php?book=04">ответ 4, голосовать</a>

<BR><BR><BR>Проголосовали:
<BR>ответ 1: <? include("book01.txt");  // открытие файлов ?>
<BR>ответ 2: <? include("book02.txt");?>
<BR>ответ 3: <? include("book03.txt");?>
<BR>ответ 4: <? include("book04.txt");?>

<BR><BR><? // а теперь считываем файлы, но не вывордим на печать
$f01 fopen("book01.txt","r");
$f02 fopen("book02.txt","r");
$f03 fopen("book03.txt","r");
$f04 fopen("book04.txt","r");
 
$fa01 fread($f01,100); // создаём параметры файлов
 
$fa02 fread($f02,100);
 
$fa03 fread($f03,100);
 
$fa04 fread($f04,100);

$afa1$fa01+$fa02+$fa03+$fa04// плюсуем файлы
echo ("Все голоса: $afa1");
?>


После создаём файл счётчика. Он не должен открываться в браузере, Открывающийся файл 1.php.
Файл счётчика называем golos.php. Не забудьте, что со следующего файла ссылки идут на предыдущий файл. У себя переименуйте на свой каталог
<?php

if ($_GET['book']==01) { // создаваемая переменная, которой будет единичка присваеваться
header("location: http://fx-take.tomsknet.ru/proba/1.php"); // создайте полный путь на файл голосования
// этот путь будет открыт после записи и закрытия данного файла
$file=fopen("book01.txt","a+"); // открывает данный файл в этом же каталоге для записи
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

else if (
$_GET['book']==02) {
header("location: http://fx-take.tomsknet.ru/proba/1.php");
$file=fopen("book02.txt","a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

else if (
$_GET['book']==03) {
header("location: http://fx-take.tomsknet.ru/proba/1.php");
$file=fopen("book03.txt","a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

else if (
$_GET['book']==04) {
header("location: http://fx-take.tomsknet.ru/proba/1.php");
$file=fopen("book04.txt","a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

?>

обязательно создадите текстовые пустые файлы book01.txt, book02.txt, book03.txt, book04.txt,
Без них работать будет, если появиться запись в файл, то и сам файл появиться, но в его отсутствии будет ошибка в том месте, где осуществляется подсчёт голосов

  Ответить  
 
 автор: Yuriev   (15.09.2012 в 12:59)   письмо автору
 
   для: logstar   (14.09.2012 в 18:29)
 

logstar, в строке
if ($answer != "") {
проверяется не пустая ли переменная (выбран ли вариант ответа в форме) и, если не пустая, то происходит запись в файл.
Но этой переменной нигде значения не присваивается, а значит и записи в файл не состоится.
Значение для переменной можно получить из массива GET как-то так:
if (isset($_GET['answer'])) $answer = $_GET['answer'];
else $answer = '';

  Ответить  
 
 автор: Kachan   (14.09.2012 в 18:51)   письмо автору
 
   для: logstar   (14.09.2012 в 18:29)
 

используйте Mysql, я первый раз тоже хотел писать на файлах, но один человек мне обьяснил что это проще и за это ему благодарен. Используйте бд так проще, не делайте на файлах.

  Ответить  
 
 автор: logstar   (14.09.2012 в 18:29)   письмо автору
 
 

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

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): пустой.

  Ответить  

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования