Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: онлайн тесты психологические
 
 автор: dedev   (31.10.2006 в 15:03)   письмо автору
 
 

Я понимаю, что код не совсем правильный, но улучшить его не получается
Подскажите как сделать, если ответили не на все вопросы выдавалось сообщение об ошибке.
Хотелось бы получить, что-то подобное http://www.softtime.ru/tests/tests.php

<form action="" method="post">
Вопрос 1<br>
<input type=radio name='v1' value='10'>«да»<br>
<input type=radio name='v1' value='5'>«не знаю»<br>
<input type=radio name='v1' value='0'>«нет»<br>
<HR>
Вопрос 2<br>
<input type=radio name='v2' value='10'>«да»<br>
<input type=radio name='v2' value='5'>«не знаю»<br>
<input type=radio name='v2' value='0'>«нет»<br>
<HR>
Вопрос 3<br>
<input type=radio name='v3' value='10'>«да»<br>
<input type=radio name='v3' value='5'>«не знаю»<br>
<input type=radio name='v3' value='0'>«нет»<br>
<HR>
<br>
<input type="reset" name="reset" value="очистить">
<input type="submit" name="go" value="принимаю">
</form>
<?
$t
=$v1+$v2+$v3;
if (
$t<=0) echo "Ответ 1";
elseif (
$t<=15) echo "Ответ 2";
elseif (
$t<=25)echo "Ответ 3";
else echo 
"Ответ 4";
?>

   
 
 автор: kasmanaft   (31.10.2006 в 15:20)   письмо автору
 
   для: dedev   (31.10.2006 в 15:03)
 

Примерно так:

* * * * * *
форма
* * * * * *
<?
if (isset($_POST['v1']) && isset($_POST['v2']) && isset($_POST['v3']))
{
  
$t $_POST['v1'] + $_POST['v2'] + $_POST['v3'];
  if (
$t<=0) echo "Ответ 1";
  elseif (
$t<=15 && $t>0) echo "Ответ 2";
  elseif (
$t<=25 && $t>15) echo "Ответ 3";
  else echo 
"Ответ 4";
}
else echo 
"Вы ответили не на все вопросы";
?>

   
 
 автор: dedev   (31.10.2006 в 17:01)   письмо автору
 
   для: kasmanaft   (31.10.2006 в 15:20)
 

Спасибо работает
Добавил проверку на нажатие кнопки
А нельзя как-то унифицировать предложенный код, чтоб он был независим от количества вопросов, потому, что вопросов может быть и 10 и 40 и 100, чтоб в коде менять только варианты ответов, если можно, а так огромное спасибо все очень хорошо работает

<? 
if (isset($go))
if (isset(
$_POST['v1']) && isset($_POST['v2']) && isset($_POST['v3'])) 

  
$t $_POST['v1'] + $_POST['v2'] + $_POST['v3']; 
  if (
$t<=0) echo "Ответ 1"
  elseif (
$t<=15 && $t>0) echo "Ответ 2"
  elseif (
$t<=25 && $t>15) echo "Ответ 3"
  else echo 
"Ответ 4"

else echo 
"Вы ответили не на все вопросы"
?> 

   
 
 автор: kasmanaft   (31.10.2006 в 17:37)   письмо автору
 
   для: dedev   (31.10.2006 в 17:01)
 

Что-то ничего в голову путного не приходит ...

Разве что: в форме сделать скрытое поле, где указывать количество вопросов, а потом в обработчике проверять:

<?php
$pk 
true;
for (
$i 1$i <= $_POST['skrytoe_pole_formi']; $i++)
  if (!isset(
$_POST["v$i"]))
  {
    
$pk false;
    break;
  }
if (
$pk)
{
   * * * 
отмечены все * * *
}
else

 * * *
}

   
 
 автор: dedev   (31.10.2006 в 18:10)   письмо автору
 
   для: kasmanaft   (31.10.2006 в 17:37)
 

Сделал вот так и он мне на все комбинации ответов выдает ОТВЕТ №4
Неуверен, что правильно сделал

<? 
$pk 
true
for (
$i 1$i <= $_POST['skrytoe_pole_formi']; $i++) 
  if (!isset(
$_POST["v$i"])) 
  { 
    
$pk false
    break; 
  } 
if (
$pk

  if (isset(
$goo)) {
  if (
$pk<=0) echo "Ответ 1"
  elseif (
$pk<=&& $pk>10) echo "Ответ 2"
  elseif (
$pk<=11 && $pk>31) echo "Ответ 3"
  else echo 
"Ответ 4";
} }
else 
{  
 echo 
"Вы ответили не на все вопросы"
}
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования