Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
1

Сложный запрос

14.12.2015, 19:09. Показов 585. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите прочитать код , совсем не могу понять как проходит проверка ответа.
quest.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
    error_reporting(E_ALL);
    header('content-type: text/html; charset=utf-8');
    include_once("bd.php");
   
$end_line = "\n";
$q_id  = isset($_POST['quest'])?(int)$_POST['quest']:0;
 
$query = "SELECT q.q_id, q.q_quest, a.a_id, a.a_answer
            FROM answer a
            RIGHT JOIN (SELECT q_id, q_quest 
                            FROM question 
                            WHERE q_id > $q_id 
                            LIMIT 1) q USING(q_id)";
$res = mysql_query($query) or die(mysql_error());
if($res){
    if(mysql_num_rows($res) > 0){
        while($row=mysql_fetch_assoc($res)){
            $quest  = $row['q_quest'];
            $hidden = ' <input type="hidden" name="quest" value="'.$row['q_id'].'">'.$end_line;
            $input  = ' <p><input type="radio" name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].'</p>'.$end_line;
            print_r ($row['a_answer'].$end_line);
            print_r ($row['q_id'].$end_line);
            
        }
    }
}   
?>
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Простой тест на PHP+MySQL</title>
</head>
<body>
<h1>Простой тест на PHP+MySQL</h1>
<h2><?php echo $quest;?></h2>
<form action = "answer.php" method = "POST">
<?php echo $hidden.$input;?>
 <p><input type="submit" value="Отправить ответ"></p>
</form>
</body>
</html>
<form action="index.php" style="text-align:center"><button><? echo "Назад" ?></button></form>

answer.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
include_once('bd.php');
 
$q_id  = isset($_POST['quest'])?(int)$_POST['quest']:0;
$a_id = isset($_POST['answer'])?(int)$_POST['answer']:false;
if($q_id && $a_id){
    $query = "SELECT a_correct, q_quest, (SELECT MAX(q_id) FROM question) m_id
                FROM answer
                LEFT JOIN question USING(q_id)
                WHERE q_id=$q_id
                    AND a_id=$a_id";
    $res = mysql_query($query) or die(mysql_error());
    if($res){
        $row = mysql_fetch_assoc($res);
 
        if($row['a_correct']==1){
            $message = 'На вопррос: "'.$row['q_quest'].'" Вы ответили правильно';
        }else{
            $message = 'На вопррос: "'.$row['q_quest'].'" Вы ответили неправильно';
        }
 
        $submit = '<input type="submit" value="Перейти к следующему вопросу">';
        if($q_id >= $row['m_id']){
            $q_id = '0';
            $submit = '<input type="submit" value="Пройти тест ещё раз">';
        }
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Простой тест на PHP+MySQL</title>
</head>
<body>
<h1>Простой тест на PHP+MySQL</h1>
<h2><?php echo $message;?></h2>
<form action="quest.php" method="POST">
 <input type="hidden" name="quest" value="<?php echo $q_id;?>">
 <p><?php echo $submit;?></p>
</form>
</body>
</html>
<?php
    }
}
?>

base.sql
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
--
-- Структура таблицы `question`
--
 
CREATE TABLE IF NOT EXISTS `question` (
  `q_id` INT(11) NOT NULL AUTO_INCREMENT,
  `q_quest` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`q_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
 
--
-- Дамп данных таблицы `question`
--
 
INSERT INTO `question` (`q_id`, `q_quest`) VALUES
(1, 'сколько будет 2 + 2'),
(2, 'сколько будет 2 + 3');
 
--
-- Структура таблицы `answer`
--
 
CREATE TABLE IF NOT EXISTS `answer` (
  `a_id` INT(12) NOT NULL AUTO_INCREMENT,
  `q_id` INT(11) NOT NULL,
  `a_answer` VARCHAR(255) NOT NULL,
  `a_correct` INT(1) NOT NULL,
  PRIMARY KEY (`a_id`),
  KEY `q_id` (`q_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
 
--
-- Дамп данных таблицы `answer`
--
 
INSERT INTO `answer` (`a_id`, `q_id`, `a_answer`, `a_correct`) VALUES
(1, 1, '2', 0),
(2, 1, '4', 1),
(3, 1, '6', 0),
(4, 1, '8', 0),
(5, 2, '1', 0),
(6, 2, '3', 0),
(7, 2, '5', 1),
(8, 2, '7', 0),
(9, 2, '9', 0);



конкретно не могу понять одно это файл answer.php , а если быть точнее то вот этот кусок
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$q_id  = isset($_POST['quest'])?(int)$_POST['quest']:0;
$a_id = isset($_POST['answer'])?(int)$_POST['answer']:false;
if($q_id && $a_id){
    $query = "SELECT a_correct, q_quest, (SELECT MAX(q_id) FROM question) m_id
                FROM answer
                LEFT JOIN question USING(q_id)
                WHERE q_id=$q_id
                    AND a_id=$a_id";
    $res = mysql_query($query) or die(mysql_error());
    if($res){
        $row = mysql_fetch_assoc($res);
 
        if($row['a_correct']==1){
помогите перевести его на русский, то есть как он читается, а дальше я уже додумаю.
[hr]
PS А еще быть точнее проблема у меня с запросом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2015, 19:09
Ответы с готовыми решениями:

Сложный запрос
Здравствуйте! Есть таблица с полями Мне нужно вывести все строки с таблицы, но если есть строки...

Сложный запрос
Делаю поиск по тегам в iamgeboard'е. Есть 3 типа тегов (опционально, т.е. каждый тип может быть,...

Сложный запрос к БД
Всем привет. Подскажите пожалуйста как составить запрос к БД вот такого вида: чтобы в ответ...

Сложный запрос
Доброго дня. Не знаю как сделать сложный запрос (Суть его такова, машина берется в аренду на...

1
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
14.12.2015, 19:52 2
PHP
1
2
3
4
5
6
7
8
$q_id  = isset($_POST['quest'])?(int)$_POST['quest']:0; //если существует $_POST['quest'] - $q_id = $_POST['quest'], если не существует $q_id = 0
$a_id = isset($_POST['answer'])?(int)$_POST['answer']:false; //если существует $_POST['answer'] - $a_id = $_POST['answer'], если не существует $a_id = false
if($q_id && $a_id){ //если $q_id, $a_id существуют и не равны false (либо нулю)
    $query = "SELECT a_correct, q_quest, (SELECT MAX(q_id) FROM question) m_id 
                FROM answer
                LEFT JOIN question USING(q_id)
                WHERE q_id=$q_id
                    AND a_id=$a_id";//выбираем поля a_correct, q_quest, максимальное поле q_id из таблицы question, m_id из таблицы ответы, с левосторонним соединением таблицы question для соединения используем поля q_id присутствующие в обеих таблицах, где q_id = $q_id и a_id = $a_id
Как-то так у вас запрос то выполняется?
0
14.12.2015, 19:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2015, 19:52
Помогаю со студенческими работами здесь

Очень сложный запрос к бд
Доброго времени суток форумчане! Была поставлена передо мной задача, вывести одним запросом в базе:...

Сложный SQL запрос
Здравствуйте! Я делаю имиджборд и пытаюсь сделать поиск по картинкам пользователей. Так я...

Сложный запрос MySQL
Как в одном запросе извлечь данные о неких элементах в таблице, и попутно с других таблиц прицепить...

Сложный SQL запрос
Добрый день! Подскажите пожалуйста вот такой вот запрос: есть 2 таблицы в 1й links поля id ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru