[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Голосование
Druids
Вот такой здоровенный код у меня (он чужой). Мне нужно сделать чтобы создавались голосования и записывались на в файл а в базу. И чтобы они не заменяли друг друга. И ещё надо сделать чтобы каждое новое голосование создавалось как новая страничка и адресом её был, ID голосования. Как такое реализовать? какие именно моменты мне надо исправить в данном коде?

<html>
<
head>
<
title>Создание опроса (by sashkovishe)</title>
</
head>

<
body>
<?
// на первой странице показываем форму для ввода кол-во вариантов ответа
$body="Создание опроса (1 шаг)<br><Br>
<form action='admin.php?action=2' method=POST>
Кол-во вариантов ответа: <input type=text name='count_otv' size=3 maxlength=2><Br>
<input type=submit value='Далее >>' name='go1'>
</form>"
;
?>
<?

// если пользователь нажал далее, то переходим на следующую страницу
switch(@$_GET['action']) {
case("2"):
// форма для ввода вопроса и ответов
// строка <input type=\"hidden\" name=\"count_otv\" value=\"".$_POST['count_otv']."\">
//нужна для передачи кол-ва ответов введенных в начале странице (потом вы узнаете зачем это нужно)

$body="Создание опроса (2 шаг)<br><Br>
<form action='admin.php?action=3' method=POST>
<input type=
\"hidden\" name=\"count_otv\" value=\"".$_POST['count_otv']."\">
Вопрос: <input type=text name='question'><br><br>
Варианты ответа:<br>"
;
// этот код генерирует поля типа text. т.е. если в поле "Кол-во вариантов ответа:
//" было введенно 3, то генерируются 3 поля для ответов

$n=1;
$count_otv=$_POST['count_otv']+1; // +1 потому что отсчет начинается с нуля
while ($n<$count_otv) {
$body.="<input type=\"text\" name=\"otv$n\"><br>";
$n++;
}
$body.="<input type=submit value='Далее >>' name='go1'>
</form>"
;
break;

// на следующей странице происходит сохранение все данных
case("3"):
$body="Создание опроса. (3 шаг)<br><b>Сохранение опроса:</b> ";
$result_file="result.txt"; // файл где будет храниться готовая форма для отображения результатов
$voting_file="voting.txt"; // файл где будет храниться результаты голосования
$form_file="form.txt"; // файл где будет храниться готовая форма для голосования
$question=$_POST['question']; // содержит вопрос опроса=)
$count_otv=$_POST['count_otv']; // кол-во ответов всего
if ($file=fopen($form_file, "w+")) { // открываем файл для чтения и записи
// $str_save - эта переменная будет содержать сохраняемый текст (в данном случае это html код)

$str_save="<form action=\"index.php\" method=post>\r\n
<table cellspacing=0 cellpadding=0 border=0 align=center>
<tr><td colspan=3 align=center>
\r\n
<font size=\"2\" face=\"Verdana\">
<i>Опрос</i><br>"
.$question."<p>\r\n
</td></tr>";
// этот участок кода отвечает за кол-во ответов в форме и выводом значение самих ответов.
// т.е. какие и сколько ответов было введено будут отображаться...
// здесь как раз и пригодилась строка написанная выше <input type=\"hidden\" name=\"count_otv\" value=\"".$_POST
//['count_otv']."\">,
// которая была нужна для того, чтобы подчситывать кол-во ответов.

for ($i=1;$i<=$count_otv;$i++) {
$otvn=$_POST['otv'.$i]; // содержит названия ответов
$str_save.="<tr><td><input type=\"radio\" name=\"otv\" value=\"".$i."\" id=\"".$i."\">
<label for=
\"".$i."\">".$otvn."</label></td></tr>";
}
$str_save.="<tr><td colspan=2 align=center><br>
<input type=submit name=golos value=
\"Готово\"><br>\r\n
<a href='index.php'>Результаты</a></td></tr>\r\n
</table></form>";
fwrite($file, $str_save); // записываем все в файл.
// форма для опроса готова, осталось только переписать (можно даже сказать сбросить) значения результатов опроса
// и переписать форму для отображения результатов

}

$str_save2="Результаты опроса:\r\n";
for ($i=1;$i<=$count_otv;$i++) {
$str_save2.="0\r\n";
if ($file2=fopen($voting_file, "w+")) {
fwrite($file2, $str_save2);
}
}


if ($file3=fopen($result_file, "w+")) {
$str_save3="<div style=\"font-size: 15px;\">
<center><font size='4'>Результаты опроса<p>
\r\n
<font size='3'>".$question."</font><hr width=30%></cetner>\r\n
<table border=0 align=center>\r\n";
for ($i=1;$i<=$count_otv;$i++) {
$otvn=$_POST['otv'.$i];
$str_save3.="<tr><td><b>".$otvn."</b> <td>(<?=\$file[".$i."];?>)</td><td>
<img src=
\"linegolos.gif\" height=10 alt=\"<?=\$pr[".$i."];?>%\" width=\"<?=(1+\$pr[".$i."]*3);?>\">
<?=
\$pr[".$i."];?>%</td></tr>\r\n";
}
$str_save3.="</td></tr></table><center><hr width=30%></cetner>
<table border=0 align=center>
\r\n
<tr><td align=center>Ответили: <B><?=\$n;?></B> чел.<br>\r\n
<a href=\"vote.php\">Назад</a></td></tr>\r\n</table>";
fwrite($file3, $str_save3);
$body.="<b>OK</b><br><a href='vote.php'>Просмотреть опрос</a>";
}
break;
}
?>
<?=
$body;?>

</body>
</
html>





Спустя 2 минуты, 28 секунд (24.07.2011 - 13:34) m4a1fox написал(а):
Йохо-хо, Йохо-хо и бутылка рому..... Так-с, посмотрим! smile.gif

Спустя 1 минута, 48 секунд (24.07.2011 - 13:36) Druids написал(а):
Цитата (m4a1fox @ 24.07.2011 - 10:34)
Йохо-хо, Йохо-хо и бутылка рому..... Так-с, посмотрим! smile.gif

здесь, основной код, который создаёт голосование =)
Если что-то ещё понадобится. Скажите - кину =)

Спустя 15 минут, 36 секунд (24.07.2011 - 13:51) m4a1fox написал(а):
Ну грубо.... Смотри вот это

if ($file=fopen($form_file, "w+")) { // открываем файл для чтения и записи
// $str_save - эта переменная будет содержать сохраняемый текст (в данном случае это html код)

$str_save="<form action=\"index.php\" method=post>\r\n
<table cellspacing=0 cellpadding=0 border=0 align=center>
<tr><td colspan=3 align=center>
\r\n
<font size=\"2\" face=\"Verdana\">
<i>Опрос</i><br>"
.$question."<p>\r\n
</td></tr>";


Тебе надо заменить на функцию для работы с БД. Ну это грубо конечно... там много чего еще осталось!

Спустя 7 минут, 28 секунд (24.07.2011 - 13:59) Druids написал(а):
Как думаешь, может проще вообще всё голосование переписать?
Тогда у меня останется вопрос, по созданию формы. Точнее как можно сделать на гольном php и html, вывод не в 3 этапа а в 1...
Ну скажем у нас есть старничка vote, на это странички вводим кол-во вариантов ответа, и они тут-же появятся. или такое организуется на JS только? Ну или по умолчанию даны 2 поля. А если их не хватает, то жмём на плюсик и получаем +1 форму. Как такое реализуется? =)

Спустя 4 минуты, 16 секунд (24.07.2011 - 14:03) ADiel написал(а):
Да, JS+HTML

Спустя 6 минут, 41 секунда (24.07.2011 - 14:10) Druids написал(а):
т.е. со знанием php, будет проще сделать голосование в 2 этапа. на 1ом этапе задаём вопрос и кол-во вариантов ответа.
На 2ом этапе мы вводим ответы, и записываем их в базу?

Спустя 58 секунд (24.07.2011 - 14:11) m4a1fox написал(а):
Druids
Цитата
Ну скажем у нас есть старничка vote, на это странички вводим кол-во вариантов ответа, и они тут-же появятся. или такое организуется на JS только? Ну или по умолчанию даны 2 поля. А если их не хватает, то жмём на плюсик и получаем +1 форму. Как такое реализуется? =)

Как сказал выше ADiel можно и так, но мне кажется, если покопаться, по можно и на голом php+html это сделать.... Правда гемморно немного получится, но - попробовать стоит! Но лучше юзай JS+php. Ибо - будет проще, а так - придется страницу перегружать....

Спустя 1 минута, 19 секунд (24.07.2011 - 14:12) m4a1fox написал(а):
Druids
Цитата
На 2ом этапе мы вводим ответы, и записываем их в базу?

вот так будет нормально
  • 1 - вводим данные
  • 2 - проверяем на корректность
  • 3 - если все нормально то - 4 вариант иначе - 1
  • 4 - заносим в БД
  • 5 - выводим результат голосования

Спустя 33 секунды (24.07.2011 - 14:12) SergeyZuzic написал(а):
Druids
Не проще , а только так =) Либо знания Js - точнее JQuery

Спустя 1 минута, 58 секунд (24.07.2011 - 14:14) Druids написал(а):
Проблема в том, что JS я не знаком вообще =(
если есть мануал, который способен помочь новечку, в данном вопросе, то я от него не откажусь =)

Спустя 36 секунд (24.07.2011 - 14:15) ADiel написал(а):
JQuery лишь упростит работу с js. Почему все думают, что JQuery - это еще один javascript?

Спустя 21 минута, 46 секунд (24.07.2011 - 14:37) m4a1fox написал(а):
ADiel
Цитата
Почему все думают, что JQuery - это еще один javascript?

И там и там есть буква J smile.gif

Спустя 17 минут, 19 секунд (24.07.2011 - 14:54) Druids написал(а):
<form action='' method=POST>
Вопрос: <input type=text name='quest' size=10 maxlength=512><Br>
Кол-во вариантов ответа: <input type=text name='answer_kol' size=3 maxlength=2><Br>
<
input type=submit value='Далее >>' name='go1'>
</
form>

<?php
if ($_POST)
{
$quest = trim($_POST['quest']);
$answer_kol = trim($_POST['answer_kol']);
//Проверяем введен ли вопрос
if (empty($quest))
{
$error=true;
$errortext .= "Вы не ввели своё вопрос<br>";
}
//проверяем введено ли кол-во ответов.
if (empty($answer_kol))
{
$error=true;
$errortext .= "Вы не ввели кол-во ответов<br>";
}
//если есть ошибки, то выводим их
if ($error)
{
echo($errortext);
}

else
{
header('Location: vote2.php');
}
}

?>


Так сказать небольшой пример 1го шага. Ошибка в 32 строке в хедере, что я там не так ввёл?
Warning: Cannot modify header information - headers already sent by (output started at W:\home\localhost\www\123\vote\vote.php:7) in W:\home\localhost\www\123\vote\vote.php on line 32


Примерно так должен выглядеть 1й шаг?

Спустя 23 минуты, 34 секунды (24.07.2011 - 15:18) m4a1fox написал(а):
Это значит что перед header есть какой либо текст!

Спустя 1 минута, 48 секунд (24.07.2011 - 15:19) m4a1fox написал(а):
php скрипты должны находится в самом верху страницы!

Спустя 9 минут, 17 секунд (24.07.2011 - 15:29) ADiel написал(а):
Никогда не пробывал, но может die(header('Location: vote2.php')); сработает?

Спустя 50 секунд (24.07.2011 - 15:30) m4a1fox написал(а):
blink.gif

Спустя 53 минуты, 5 секунд (24.07.2011 - 16:23) SergeyZuzic написал(а):
ADiel
Никто так не думает ), просто на чистом JS трудно писать запросы к php. а чтобы писать на JQuery не надо знать JS. Хотя понятно, что используя JQuery мы и используем JS. Вроде понятно написал smile.gif

Спустя 2 минуты, 52 секунды (24.07.2011 - 16:26) ADiel написал(а):
Я PHP программист, если верстаю, то и скрипты пишу. Маленького не делаю, потому не знаю js и не обязан =)
А то, что знаю, тем делюсь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.