Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Вывод опроса с БД


Автор: narutoviper 6.2.2012, 21:13
Доброго времени суток! Вообще начал делать скрипт проведения опроса
Создал три таблицы и заполнил минимальными данными 
Код


CREATE TABLE IF NOT EXISTS `answer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `question_id` int(11) DEFAULT NULL,
  `vote_count` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=13 ;


INSERT INTO `answer` (`id`, `name`, `question_id`, `vote_count`) VALUES
(1, '5', 1, 1),
(2, '7', 1, 0),
(3, '9', 1, 0),
(4, '12', 1, 0),
(5, '11', 2, 0),
(6, '22', 2, 0),
(7, '25', 2, 1),
(8, 'Алгебра', 3, 0),
(9, 'Физика', 3, 1),
(10, 'Литра', 3, 0),
(11, 'История', 3, 1),
(12, 'Технология', 3, 0);


CREATE TABLE IF NOT EXISTS `poll` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `status` enum('active','close','rough') DEFAULT 'close',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;


INSERT INTO `poll` (`id`, `name`, `status`) VALUES
(1, 'Первый опрос', 'active');


CREATE TABLE IF NOT EXISTS `question` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` text,
  `type` enum('radio','chek') DEFAULT 'radio',
  `poll_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;


INSERT INTO `question` (`id`, `name`, `type`, `poll_id`) VALUES
(1, 'Сумма числе 2+3', 'radio', 1),
(2, 'Произведение чисел 5*5', 'radio', 1),
(3, 'Какой у Вас любимый предмет?', 'chek', 1);



файл подключения к БД startup.php
Код


function startup()
{
    // Настройки подключения к БД.
    $hostname = 'localhost'; 
    $username = 'root'; 
    $password = '';
    $dbName = 'poll';    
    
    // Подключение к БД.
    mysql_connect($hostname, $username, $password) or die('No connect with data base'); 
    mysql_select_db($dbName) or die('No data base');        
}


Файл модели model.php
Код

<?php
function poll_ans()
{
    // Запрос.
    $query = "SELECT question.name AS question, answer.name AS answer
    FROM question 
            LEFT JOIN answer ON answer.question_id = question.id";
    $result = mysql_query($query);
                            
    if (!$result)
        die(mysql_error());
    
    // Извлечение из БД.
    $n = mysql_num_rows($result);
    $poll= array();

    for ($i = 0; $i < $n; $i++)
    {
        $row = mysql_fetch_assoc($result);        
        $poll[] = $row;
    }
    
    return $poll;
}


Ну и собственно index.php 

Код

<?php
include_once('startup.php');
include_once('model.php');
startup();
$poll_ans = poll_ans();

?>

<p>
<? foreach ($poll_ans as $polls): ?>
        <?=$polls['question']?>
<? foreach ($poll_ans as $polls): ?>
        <h3>
        <input type="radio" name="answer" value="a<?=$polls['question_id']?>"><?=$polls['answer']?><Br>
        </h3>
        <? endforeach ?>
<? endforeach ?>


Как правильно вывести опрос на страницу? тоесть чтобы в шапке имя опроса, затем вопрос-ответы, вопрос-ответы. Это же по идеи автоматически должно будет генерироваться запросом с БД при выборе нужного опроса(id), и выводится на страницу. Какой то бред foreach'ем попробовал сделать, короче каша в голове( помогите пожалуйста, как правильно делается

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)