Здравствуйте, уважаемые знатоки.
Прошу сильно меня не пинать, я только учусь.
Есть скрипт голосования, считает, выводит результаты и так далее. все отлично. прикрутил к нему адаптивную верстку, админку с авторизацией и регистрацией пользователей. все вроде бы не плохо. но хотелось бы его немного модифицировать, а у меня ума не хватает (прежде чем пинать, прошу учесть что я только учусь).
Сейчас идет так:
Создаю голосование, в нем ответы 1,2,3 или 10 ответов и так далее.
Как мне сделать, чтобы создавался тот же опрос / голосование, но там было несколько голосований, желательно неограниченное количество. Например нажал кнопку, добавился новый вопрос с вариантами ответов. получается например Опрос №1
Там вопрос №1
- вариант "а"
- вариант "б"
- вариант "в"
Там вопрос №2
- вариант "а"
- вариант "б"
- вариант "в"
Вот структура таблиц и сам код, когда создаешь новое голосование.
Заранее спасибо всем кто помог, я уже отчаялся (хотя видимо идет задача о работе со связями между таблицами или даже строками. Голова кипит, запутался)
<?php
include_once "config.php"; # подключаем файл с настройками
db_connect(); # подключаемся к базе
# если кнопка НЕ нажата, то выводим форму
if (!isset($_POST['submit'])) {
?>
<form action="" method="POST">
Введите ваш вопрос
<input type="text" name="quest" placeholder="Текст Вашего вопроса" class="form-control">
<br/>
Варианты ответа (1 строчка - 1 вариант)<br/>
<textarea class="form-control" rows="5" id="textareaDefault" name="variant"></textarea>
<br/>
<div class="col-lg-6">
</div>
<input type="submit" name="submit" value="Добавить" class="btn btn-primary"/>
</form>
<br/>
</div>
<?php
}
else { # если кнопка нажата, то заносим в базу опрос
$err = array();
$quest = mysql_real_escape_string($_POST['quest']);
$variant = mysql_real_escape_string($_POST['variant']);
# Проверяем заполнено ли поле для ввода вопроса
if (trim($quest) == '') {
$err[] = "Вы не задали вопрос";
}
# Проверяем введены ли варианты ответа
if (trim($variant) == '') {
$err[] = "Вы не ввели варианты ответа";
}
else {
# Разделяем строки и засовываем их в массив
$variant= explode('\r\n', $variant);
if (count($variant) < 2) {
$err[] = "Вариантов ответа должно быть минимум 2!";
}
}
# Проверяем нет ли уже такого вопроса в базе
$quest_query = mysql_query("SELECT count(*) FROM `poll_question` WHERE quest_name = '".$quest."'") or die(mysql_query());
$count = mysql_result($quest_query,0,0);
if ($count > 0 ) $err[] = "Такой вопрос уже есть в базе, задайте другой";
unset($quest_query);
# Проверяем были ли ошибки, если ошибки были выводим их
if (count($err) != 0) {
echo "<b>Ошибки:</b><br/>";
foreach ($err as $error) echo $error."<br/>";
echo "<br><a href=\"javascript:history.go(-1);\">Вернуться назад</a>";
}
# Если ошибок небыло заносим данные в базу
else {
# Записываем вопрос в базу
$q = mysql_query("INSERT INTO `poll_question` SET quest_name = '".$quest."', quest_act = 1") or die (mysql_error());
unset($q);
# Узнаем ID только что записанного вопроса
$q = mysql_query("SELECT * FROM `poll_question` WHERE quest_name = '".$quest."'") or die(mysql_error());
$row = mysql_fetch_array($q);
$id_quest = $row['quest_id'];
unset($q,$row);
#Записываем в базу варианты ответа
foreach ($variant as $var)
$q = mysql_query("INSERT INTO `poll_variant` SET var_id_quest = ".$id_quest.", var_name = '".$var."', var_voice = 0") or die(mysql_error());
echo 'Опрос успешно добавлен!<br/>';
echo '<a href="/journal.php">Добавить еще?</a>';
}
}
?>
Вот структура таблиц:
таблицы poll_question и poll_variant
poll_question - таблица с вопросами
CREATE TABLE `poll_question` (
`quest_id` int(5) NOT NULL auto_increment,
`quest_name` varchar(255) NOT NULL,
`quest_act` int(1) NOT NULL,
PRIMARY KEY (`quest_id`)
);
quest_id - 1,2,3,4..., N выставляется автоматически
quest_name - Сам вопрос
quest_act - если 1, то отображать опрос, если 0 то убрать.
poll_variant - таблица с вариантами ответов
CREATE TABLE `poll_variant` (
`var_id` int(5) NOT NULL auto_increment,
`var_id_quest` int(5) NOT NULL,
`var_name` varchar(255) NOT NULL,
`var_voice` int(4) NOT NULL,
PRIMARY KEY (`var_id`)
);
var_id - 1,2,3,4..., N выставляется автоматически
var_id_quest - Определяем принадлежность к вопросу (ставиться ID вопроса к которому относится ответ)
var_name - Сам ответ
var_voice - Сколько человек проголосовало