|
|
|
|
|
для: Yuriev
(15.09.2012 в 12:59)
| | ну не со строки GET, так как данные методом POST передаются. Видимо скрипт писался для сервера где register_global включен... | |
|
|
|
|
|
|
|
для: 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,
Без них работать будет, если появиться запись в файл, то и сам файл появиться, но в его отсутствии будет ошибка в том месте, где осуществляется подсчёт голосов | |
|
|
|
|
|
|
|
для: logstar
(14.09.2012 в 18:29)
| | logstar, в строке
if ($answer != "") {
проверяется не пустая ли переменная (выбран ли вариант ответа в форме) и, если не пустая, то происходит запись в файл.
Но этой переменной нигде значения не присваивается, а значит и записи в файл не состоится.
Значение для переменной можно получить из массива GET как-то так:
if (isset($_GET['answer'])) $answer = $_GET['answer'];
else $answer = ''; | |
|
|
|
|
|
|
|
для: logstar
(14.09.2012 в 18:29)
| | используйте Mysql, я первый раз тоже хотел писать на файлах, но один человек мне обьяснил что это проще и за это ему благодарен. Используйте бд так проще, не делайте на файлах. | |
|
|
|
|
|
|
| Приветствую всех.
Помогите пожалуста разобраться. Нужно создать опрос на сайте. Сам начинаю только разбираться в РНР программировании. Нашел скрипт в нете, только он почему то не работает, точнее не учитываются голоса посетителей. Подскажите, что нужно изменить.
Заранее спасибо.
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): пустой. | |
|
|
| |
|