@s-developer

Как сделать из голосования опрос?

Здравствуйте, уважаемые знатоки.
Прошу сильно меня не пинать, я только учусь.
Есть скрипт голосования, считает, выводит результаты и так далее. все отлично. прикрутил к нему адаптивную верстку, админку с авторизацией и регистрацией пользователей. все вроде бы не плохо. но хотелось бы его немного модифицировать, а у меня ума не хватает (прежде чем пинать, прошу учесть что я только учусь).
Сейчас идет так:
Создаю голосование, в нем ответы 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 - Сколько человек проголосовало
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы