Цитата (mvg @ 30.12.2014 - 20:57) |
1) Что если $key = array_rand($in) станет false до того как заполниться массив $result? Т.е. я хотел сказать что алгоритм не оптимальный. |
while ( null !== ($key = array_rand($in)) ) {
CREATE TABLE IF NOT EXISTS `zno_questions` (
`zno_questions-id` int(11) NOT NULL AUTO_INCREMENT,
`zno_questions-toppic` int(11) NOT NULL,
`zno_questions-type` int(11) NOT NULL,
`zno_questions-showtext` int(11) NOT NULL,
`zno_questions-text` text NOT NULL,
`zno_questions-img` varchar(200) NOT NULL,
`zno_questions-form` int(11) NOT NULL,
PRIMARY KEY (`zno_questions-id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `zno_questions` (`zno_questions-id`, `zno_questions-toppic`, `zno_questions-type`, `zno_questions-showtext`,
`zno_questions-text`, `zno_questions-img`, `zno_questions-form`) VALUES
(1, 1, 1, 0, 'Вопрос. Один верный ответ!', '', 0),
(2, 1, 2, 0, 'Выберите несколько ответов', '', 0),
(3, 1, 3, 0, 'Установите соответствия', '', 0);
CREATE TABLE IF NOT EXISTS `zno_answers` (
`zno_answers-id` int(11) NOT NULL AUTO_INCREMENT,
`zno_answers-question` int(11) NOT NULL,
`zno_answers-answer` text NOT NULL,
`zno_answers-true` text NOT NULL,
`zno_answers-inf` int(11) NOT NULL,
PRIMARY KEY (`zno_answers-id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
INSERT INTO `zno_answers` (`zno_answers-id`, `zno_answers-question`, `zno_answers-answer`, `zno_answers-true`, `zno_answers-inf`) VALUES
(1, 1, 'ответ 1', '', 0),
(2, 1, 'ответ 2 верный', '1', 0),
(3, 1, 'ответ 3', '', 0),
(4, 1, 'ответ 4', '', 0),
(5, 2, 'ответ 1', '', 0),
(6, 2, 'ответ 2 верный', '1', 0),
(7, 2, 'ответ 3 верный', '1', 0),
(8, 2, 'ответ 4', '', 0),
(9, 3, 'Ответ А', 'Верный ответ к А', 0),
(10, 3, 'Ответ В', 'Верный ответ к В', 0),
(11, 3, 'Ответ Г', 'Верный ответ к Г', 0),
(12, 3, '', 'Лишний ответ Д', 0);
SELECT *
FROM `zno_questions`
LEFT JOIN `zno_resultsinf` ON (`zno_resultsinf`.`zno_resultsinf-q` = `zno_questions`.`zno_questions-id`)
WHERE `zno_questions-toppic` = '".$TSTtoppic['zno_toppic-id']."' ".$search_if_saved."
ORDER BY `zno_resultsinf-id`,`zno_questions-form`, RAND()
SELECT *
FROM `zno_answers`
LEFT JOIN `zno_resultsinf` ON (
`zno_resultsinf`.`zno_resultsinf-a1` = `zno_answers`.`zno_answers-id` AND
`zno_resultsinf`.`zno_resultsinf-res` = '".$TSTresults['zno_results-id']."'
)
WHERE `zno_answers-question` = ".$TSTquestion['zno_questions-id']."
ORDER BY `zno_resultsinf-id`, RAND()
LIMIT 10
CREATE TABLE IF NOT EXISTS `zno_results` (
`zno_results-id` int(11) NOT NULL AUTO_INCREMENT,
`zno_results-user` int(11) NOT NULL,
`zno_results-toppic` int(11) NOT NULL,
`zno_results-d-start` datetime NOT NULL,
`zno_results-d-finish` datetime NOT NULL,
`zno_results-t-all` int(11) NOT NULL,
`zno_results-t-true` int(11) NOT NULL,
`zno_results-status` int(1) NOT NULL,
`zno_results-deleted` int(1) NOT NULL,
PRIMARY KEY (`zno_results-id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=41
CREATE TABLE IF NOT EXISTS `zno_resultsinf` (
`zno_resultsinf-id` int(11) NOT NULL AUTO_INCREMENT,
`zno_resultsinf-res` int(11) NOT NULL,
`zno_resultsinf-q` int(11) NOT NULL,
`zno_resultsinf-a1` int(11) NOT NULL,
`zno_resultsinf-a2` int(11) NOT NULL,
`zno_resultsinf-val` varchar(200) NOT NULL,
PRIMARY KEY (`zno_resultsinf-id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1130 ;