|
|
|
|
|
для: Trianon
(30.07.2007 в 22:16)
| | тоже выход, чего сервер то зря загружать?! пусть вся нагрузка будет на клиенте :))) | |
|
|
|
|
|
|
|
для: testdriver
(30.07.2007 в 21:28)
| | Я Вам больше скажу - можно обойтись вообще без скриптов серверной стороны. | |
|
|
|
|
|
|
|
для: interest_quastion
(30.07.2007 в 21:24)
| | .
<?php
$qtnb = array(
1=>array('q' =>'кол-во лет?',
'a'=> array(1=>'ответ1',2=>'ответ2',3=>'ответ3'))
,2=>array('q' =>'сайты каких тематик вы посещаете?',
'a'=> array(1=>'ответ1',2=>'ответ2',3=>'ответ3'))
,3=>array('q' =>'сколько времени вы проводите в интернете?',
'a'=> array(1=>'ответ1',2=>'ответ2',3=>'ответ3'))
,4=>array('q' =>'покупаете какие-либо товары через интернет?',
'a'=> array(1=>'ответ1',2=>'ответ2',3=>'ответ3'))
);
$answ = array(1=> 'один', 2=> 'другой', 3=> 'четвертый');
function in($x) {return is_array($x) ? array_map('in', $x): intval($x);}
echo '<form action=? method =post>';
$stop = 1;
foreach($qtnb as $qn => $qtn)
{
if(isset($_POST['ans'][$qn]))
foreach(in($_POST['ans'][$qn]) as $k => $v)
{
echo "<input type=hidden name=ans[$qn][$k] value=$v />\r\n";
$sum[$k] = @$sum[$k] + $v;
}
else
{
echo "Вопрос $qn. {$qtn['q']}<hr>";
foreach($qtn['a'] as $k => $v)
echo "<br/><input type=checkbox name=ans[$qn][$k] value=1 /> "
.htmlspecialchars($v)."\r\n";
echo "<br/><input type=submit value=answer! />\r\n";
$stop = 0;
break;
}
}
echo '</form>';
if($stop)
{
arsort($sum); reset($sum); $k = key($sum);
echo "результат ".$answ[$k];
}
?>
|
| |
|
|
|
|
|
|
|
для: interest_quastion
(30.07.2007 в 21:24)
| | Вполне можно без базы данных обойтись. | |
|
|
|
|
|
|
|
для: Trianon
(30.07.2007 в 21:15)
| | вопрос 1
кол-во лет?
ответ1
ответ2
ответ3
вопрос 2
сайты каких тематик вы посещаете ?
ответ1
ответ2
ответ3
вопрос 3
сколько времени вы проводите в интернете?
ответ1
ответ2
ответ3
вопрос4
покупаете какие-либо товары через интернет?
ответ1
ответ2
ответ3
Если больше ответов под номером 1, то результат один, если больше ответов под номером 2, то другой, больше под номером 3 - четвертый. | |
|
|
|
|
|
|
|
для: interest_quastion
(30.07.2007 в 21:17)
| | Вы можете нарисовать массив, который бы хранил описание всей базы теста. Если вопросов там и вправду около деcятка, это труда не составит. | |
|
|
|
|
|
|
|
для: testdriver
(30.07.2007 в 21:08)
| | Спасибо за алгоритм Valick и совет testdriver'а, но у меня действительно не так много вопросов (~10). Вот я и хочу узнать, как нужно построить конструкцию if..elseif, чтобы все формы показывались поочередно..
Можете написать как так сделать ? Заранее благодарен ) | |
|
|
|
|
|
|
|
для: interest_quastion
(30.07.2007 в 20:56)
| | >Это я уже понял, мне нужен только алгоритм, который позволял бы показывать одну форму за другой..
для ответа на этот вопрос Вы привели слишком мало данных.
Нужно знать, как зависят от номера вопроса тексты вопросов, а также поясняющие тексты и количество самих ответов.
Тогда можно было бы говорить об алгоритме, реализовывать который (тут Valick прав) куда проще на БД, чем как-то еще. | |
|
|
|
|
|
|
|
для: interest_quastion
(30.07.2007 в 20:56)
| | Valick предложил не плохой вариант, на мой взгляд более предпочтительный чем ваш. Хотя если у вас вопросов не много предполагается использовать то можно и на файлах сделать, и обойтись без базы данных, тут как вам собственно удобнее. | |
|
|
|
|
|
|
|
для: interest_quastion
(30.07.2007 в 20:56)
| | Я бы с базой данных это сделал.
И тестдрайвер прав рациональности маловато.
Я бы сделал форму одну выводящую вопрос по ID, и с каждой формой скрытым полем передавал ID следующего вопроса. На мой взгляд это более универсально. | |
|
|
|
|