(PHP) Выборка рандомных строк из БД

slmark
Дата: 12.10.2006 10:41:47
Столкнулся со следующей проблемой:
написал приложении online-тестирования, при прохождении теста необходимо поочередно отвечать на вопросы, т.е. отображается только один вопрос на странице, нажимем [ответить], появляется следующий вопрос и т.д.
Вопросы из базы выбирабтся по одному следующим запросом:
SELECT * FROM `questions` WHERE test_id = $test_id LIMIT $n, 1
$n указывает на то, на сколько вопросов были даны ответы.
И вот сейчас возникла необходимость сделать рандомную выборку определенного количества вопросов из теста, т.е.
SELECT * FROM `questions` WHERE test_id = $test_id ORDER BY RAND() LIMIT $qnumber
Вот здесь и получается загвоздка. Если оставить лимит из 1-го запроса, тогда вопросы могут повторятся, что недопустимо.
Как можно одолеть такую ситуацию?
Спасибо!
JASterus
Дата: 12.10.2006 11:18:32
можно сделать через анус. заносишь в сессию вопросы, на которые человек дал ответы, в запросе указываешь
'where id not in('.$_SESSION['questions'].')'
Savage_Alex
Дата: 12.10.2006 11:18:37
ну если хорошо подумать - вариантов может быть много.
Сразу с ходу могу порекомендовать:
1. Выбрать id вопросов в массив
2. Расставить их в массиве в произвольном порядке
3. Запросы к таблице делать уже на основании сформированного массива (брать из него id) - тогда точно вопросы повторяться не будут


-- мы едем, едем, едем.... ---