Здравствуйте
Пожалуйста, подскажите:
по
php новичок, к тому же давно не писала. Решила вспомнить - результат:
Если ответить не верно на вопрос № 4, выдает:
Вы не ответили не вопрос №4Ваши знания по астрономии необходимо улучшить.
В принципе, запись "Вы не ответили не вопрос №4" я потом уберу, но в данный момент есть ошибка, а в чем...
PS: в тесте много эстетических недочетов как в коде, так и в оформлении - не обращайте на них внимание, это только заготовка, еще даже не все вопросы написаны.
Спустя 13 минут, 1 секунда (20.10.2009 - 09:42) jetistyum написал(а):
проверьте что содержится в переменной $v4 перед switch
var_dump например ..
возможно ошибка что Вы выбираете vega, которого у вас нет в списке switch
Спустя 3 минуты, 40 секунд (20.10.2009 - 09:45) Unona написал(а):
Нашла, спасибо
Как всегда - опечатка:
Вопрос № 4:
PHP |
<input type='radio' name='v4' value='vega'>Вега<br> |
vega
Обработка:
PHP |
case 'bega': $i=$i+0; break; |
bega
Спустя 4 минуты (20.10.2009 - 09:49) Unona написал(а):
Попробовала сократить
PHP |
case '3': echo 'Ваши знания по астрономии необходимо улучшить.'; break; case '2': echo 'Ваши знания по астрономии необходимо улучшить.'; break; case '1': echo 'Ваши знания по астрономии необходимо улучшить.'; break; |
на
PHP |
case '<3' or '>1': echo 'Ваши знания по астрономии необходимо улучшить.'; break; |
вроде работает...
Спустя 4 минуты, 13 секунд (20.10.2009 - 09:54) glock18 написал(а):
знаете, это очень странно... может чего-то не понимаю, но я бы предложил вам проверить эту конструкцию получше.
так должно работать
PHP |
case '1': case '2': case '3': echo 'Ваши знания по астрономии необходимо улучшить.'; break; |
Спустя 30 секунд (20.10.2009 - 09:54) jetistyum написал(а):
а еще можно сократить тем, что не прибавлять к $i ноль )
Спустя 3 минуты, 40 секунд (20.10.2009 - 09:58) Unona написал(а):
jetistyum, спасибо - сокращу.
glock18 в тесте будет 15 вопросов и 3-4 результата. Просто слишком много придется писать case. А что делать, если вопросов 20?
Спустя 1 минута, 52 секунды (20.10.2009 - 10:00) jetistyum написал(а):
case '<3' or '>1': echo 'Ваши знания по астрономии необходимо улучшить.'; break;
такая конструкция не будет работать, т.к. происходит сравнивание
if ($i=='<3')
тоесть сравнивание со строкой.
в данном случае glock18 предложил вариант корректнее.
еще вариант
if($i==5)
echo '...';
elseif($i==4)
echo '...';
elseif($i>0)
echo '...';
else
echo 'Loooser';
Это не лучше, не хуже, это просто еще один вариант
Спустя 8 минут, 49 секунд (20.10.2009 - 10:08) Unona написал(а):
jetistyum, понятно. Хотя проверила - вроде работает... Но если код изначально некорректен - исправлю.
С if у меня изначально не получилось, возможно, т.к. выбрала вариант присваивания:
, а не равенства if($i==5)
Спустя 30 минут, 39 секунд (20.10.2009 - 10:39) Kuliev написал(а):
Unona
А здесь так задумано или это опечатка ?
HTML |
<td><u><b>Впорос 1:</b></u><br>Сколько планет в известно в Солнечной системе на данный момент?<br> <input type='radio' name='v1' value='s1'>7<br> <input type='radio' name='v1' value='s2'>8<br> <input type='radio' name='v1' value='s3'>9<br> <input type='radio' name='v1' value='s4'>Земля<br> <!-- Вот эта строчка name='v4' --> <input type='radio' name='v4' value='other'>Другое<br><br>
|
Спустя 15 минут, 14 секунд (20.10.2009 - 10:54) Unona написал(а):
Kuliev, это тоже опечатка, спасибо!
Строчка создалась в четвертом вопросе, в остальные просто копировалась. Значит не везде исправила.
Спустя 7 минут, 42 секунды (20.10.2009 - 11:02) glock18 написал(а):
В солнечной системе на данный момент 10 планет
Ведут споры является ли планетой Плутон правда. Так же на краю системы нашли порядка 7 лет назад блуждающую планеты Прозерпина. Она движется по определенной орбите вокруг солнца, что, несмотря на ее небольшие размеры, является признаком планеты.
ЗЫ: никогда не любил тесты... в них приходится ориентироваться на проверяющих, и они подразумевают, что проверяемый должен знать небольше, чем проверяющий.
Спустя 6 минут, 52 секунды (20.10.2009 - 11:09) Unona написал(а):
glock18, официально - 8. Плутон больше не планета. Он относится к разряду "малых планет". К ним же отнесли Цереру - ранее самый большой астероид и Эриду - собственно из-за нее все и началось. Так и назвали
Спустя 5 минут, 56 секунд (20.10.2009 - 11:15) glock18 написал(а):
Unonaуже официально значит
окей, если так, то этот тест мне нравится
обычно, к сожалению, когда видишь такой вопрос, то ответ будет как из букваря... вы меня приятно удивили
а что можете сказать про Прозерпину? Ее таки тоже отнесли к разряду планетоидов?
Спустя 23 минуты, 23 секунды (20.10.2009 - 11:38) Unona написал(а):
glock18, я говорю только официальные данные. И доверяю только им. Остальное - теория.
Тест действительно с подобными "подводными камнями".
Спустя 3 часа, 24 минуты, 39 секунд (20.10.2009 - 15:03) Kuliev написал(а):
UnonaДелать было нечего и я решил немного оптимизировать Ваш код, так сказать придать немного динамизма Вашему скрипту.
Судя из Вашего скрипта Вы не используете БД, не храните данные в файле и т.д.
исходя из это я построил такой вот скриптик для Вас надеюсь что Вы разберетесь!
PHP |
<?php if(isset($_POST['rezult'])) { $v1 = !empty($_POST['v1']) ? $_POST['v1'] : null; $v2 = !empty($_POST['v2']) ? $_POST['v2'] : null; $v3 = !empty($_POST['v3']) ? $_POST['v3'] : null; $v4 = !empty($_POST['v4']) ? $_POST['v4'] : null; $v5 = !empty($_POST['v5']) ? $_POST['v5'] : null;
$vopros = array($v1,$v2,$v3,$v4,$v5);
$otvet = array("s2","kamen","orion","other","88");
$j = 0; for($i = 0; $i < count($vopros); $i++) { if($vopros[$i] == $otvet[$i]) ++$j; }
$res = $j * 100 / count($otvet); echo "Вы ответели на ".round($res,2)."%"; }
$array = array( "Сколько планет известно в Солнечной системе на данный момент?" => array( "s1" => "7", "s2" => "8", "s3" => "9", "s4" => "Земля", "other" => "Другое" ), "Что такое Солнце?" => array( "zvezda" => "Звезда", "kamen" => "Камень", "ogon" => "Огонь", "other" => "Другое" ), "В каком созвездии находится Региль?" => array( "betel" => "Бетельгейзе", "orion" => "Орион", "volver" => "Волосы Вероники", "other" => "Другое" ), "Назовити ярчайшую звезду, видимою на нашем небе?" => array( "sir" => "Сириус", "vega" => "Вега", "other" => "Другое" ), "Сколько созвездий зарегистрировано на нашем небе в данный момент?" => array( "87" => "87", "88" => "88", "other" => "Другое" ) );
$table = "<form method='post'>\n"; $table .= "<table width='100%' cellspacing='0' cellpadding='0' border='0'>\n"; $table .= "<tr>\n"; $table .= "<td>В данном тесте необходимо ответить на 15 вопросов, по окончании теста Вы узнаете степень своих знаний по астрономии </td>\n"; $table .= "</tr>\n";
$i = 0; foreach ($array as $key => $value) { $table .="<tr>\n"; $table .="<td><u><b>Впорос ".++$i.":</b></u><br>".$key."<br>\n";
foreach($value as $key => $val) { $table .= "<input type='radio' name='v".$i."' value='".$key."'>".$val."<br>\n"; }
$table .= "</td>\n"; $table .= "</tr>\n"; }
$table .= "<tr>\n"; $table .= "<td><input type='submit' name='rezult' value='Узнать результат'>\n"; $table .= "</tr>\n"; $table .= "</table></form>\n";
echo $table; |
Спустя 40 минут, 4 секунды (20.10.2009 - 15:43) twin написал(а):
Цитата |
Делать было нечего |
как я завидую...
Его дополнить возможностью выбора и чтения вопросов из файлов... раз базы нету.
Спустя 16 минут, 40 секунд (20.10.2009 - 16:00) Unona написал(а):
Kuliev, большое спасибо!
Правда я массивы почти не помню - будет схема вспомнить
Спустя 5 минут, 11 секунд (20.10.2009 - 16:05) Kuliev написал(а):
Цитата (Unona @ 20.10.2009 - 18:00) |
Kuliev, большое спасибо!
Правда я массивы почти не помню - будет схема вспомнить |
Пожалуйста
Спустя 3 месяца, 3 дня, 6 часов, 37 минут, 39 секунд (23.01.2010 - 23:42) Gector написал(а):
Спасибо большое этой теме. Она выручила меня под конец дня. Целый день бодался с радио кнопками. Если есть кошелек у форума. Сделай не большую благотворительность)
С Уважением