народ нужна помощь в одном вопросе.
$query = mysql_query("SELECT q_id FROM question
WHERE difficulty=$difficulty
ORDER BY RAND() LIMIT 3");
while($qrand22 = mysql_fetch_assoc($query))
$data[]= $qrand22['q_id'];
(int)$qquery_1 = $data['0'];
(int)$qquery_2 = $data['1'];
(int)$qquery_3 = $data['2'];
$query = "(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=1 AND q_id=$qquery_1 LIMIT 1)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=0 AND q_id=$qquery_1 ORDER BY RAND() LIMIT 3)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=1 AND q_id=$qquery_2 LIMIT 1)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=0 AND q_id=$qquery_2 ORDER BY RAND() LIMIT 3)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=1 AND q_id=$qquery_3 LIMIT 1)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=0 AND q_id=$qquery_3 ORDER BY RAND() LIMIT 3)
";
$res = mysql_query($query) or die(mysql_error());
$arr = array();
while($row = mysql_fetch_assoc($res)) {
if ( ! isset($arr[ $row['q_id'] ])) $arr[ $row['q_id'] ] = array();
$arr[ $row['q_id'] ][] = $row;
}
echo '<pre>'; print_r($arr); echo '</pre>';
она выдает мне вот это
Array
(
[2] => Array
(
[0] => Array
(
[q_id] => 2
[q_quest] => Сколько будет 3+3?
[a_id] => 10
[a_answer] => Шесть
[a_correct] => 1
)
[1] => Array
(
[q_id] => 2
[q_quest] => Сколько будет 3+3?
[a_id] => 7
[a_answer] => Семь
[a_correct] => 0
)
[2] => Array
(
[q_id] => 2
[q_quest] => Сколько будет 3+3?
[a_id] => 9
[a_answer] => Четыре
[a_correct] => 0
)
[3] => Array
(
[q_id] => 2
[q_quest] => Сколько будет 3+3?
[a_id] => 30
[a_answer] => Семнадцать
[a_correct] => 0
)
)
[1] => Array
(
[0] => Array
(
[q_id] => 1
[q_quest] => Сколько будет 2+2?
[a_id] => 5
[a_answer] => Четыре
[a_correct] => 1
)
[1] => Array
(
[q_id] => 1
[q_quest] => Сколько будет 2+2?
[a_id] => 28
[a_answer] => Пятнадцать
[a_correct] => 0
)
[2] => Array
(
[q_id] => 1
[q_quest] => Сколько будет 2+2?
[a_id] => 27
[a_answer] => Пятьдесят
[a_correct] => 0
)
[3] => Array
(
[q_id] => 1
[q_quest] => Сколько будет 2+2?
[a_id] => 1
[a_answer] => Один
[a_correct] => 0
)
)
[4] => Array
(
[0] => Array
(
[q_id] => 4
[q_quest] => Сколько будет 10-3?
[a_id] => 31
[a_answer] => Семь
[a_correct] => 1
)
[1] => Array
(
[q_id] => 4
[q_quest] => Сколько будет 10-3?
[a_id] => 17
[a_answer] => Пять
[a_correct] => 0
)
[2] => Array
(
[q_id] => 4
[q_quest] => Сколько будет 10-3?
[a_id] => 16
[a_answer] => Десять
[a_correct] => 0
)
[3] => Array
(
[q_id] => 4
[q_quest] => Сколько будет 10-3?
[a_id] => 15
[a_answer] => Три
[a_correct] => 0
)
)
)
Мне допустим не нужно как раньше после каждого ответа делать новый запрос. и Трогать бд.
Я просто вытаскиваю сколько мне нужно вопросов и помещаю их в сессии.
Но получается число вопросов будет фиксировано.В цикле нельзя я читал запрос использовать.
Через юнионы все получается громозким.
Каким еще способом можно сделать подобное и более компактное?
Просто если можно было использовать циклы число вопросов я бы уже задать мог . А тут придется дописывать юнионы. Как еще это обойти?
Не игнорьте хорош вам)