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

Форум PHP

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

 

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

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

тема: подчет результатов в тесте
 
 автор: leon22   (07.07.2009 в 20:14)   письмо автору
 
 

Имеется код:
<form action='obrabotka.php' method='post' name=form1> 
<input type="radio" name="otvet1" value=1>
<input type="radio" name="otvet1" value=2>
<input type="radio" name="otvet1" value=3>
<input type="radio" name="otvet1" value=4>

<input type="radio" name="otvet2" value=1>
<input type="radio" name="otvet2" value=2>
<input type="radio" name="otvet2" value=3>
<input type="radio" name="otvet2" value=4>
<INPUT TYPE='submit' value='Otoslat`' class='button'>
    </form>

так же в БД есть 2 колонки в которых записано IDвопроса и номер правильного ответа (например 3)


как сравнить ответы с радио-кнопок, с теми что в базе? и подсчитать общие количество правильных (тех что совпадают)?
Зарание благодарю.

  Ответить  
 
 автор: Leon22   (08.07.2009 в 15:44)   письмо автору
 
   для: leon22   (07.07.2009 в 20:14)
 

Не получается в цикле вывести ответы, уже пол дня сижу за скриптом, все перепробовал
нужно для начала чтоб скрипт просто выводил: ID - напротив номер правильно ответа, и если ответ верный то Ок, если нет БЕД, а у меня какая-то лобуда получается.


         
        do  
                           {
                           if($otvet['nomer_otveta']==$a){$com="Ok";} else {$com="Bed";}
                            $a= $_REQUEST[otvet.$quests['id']]; 
                            /*  echo "<FONT SiZE=4>","Radio: ",$a,"</FONT><BR>"; */  
                             
    echo "Vopros nomer ".$a."".$otvet['id_test']." user";
        do  {
        
               echo " prav".$otvet['nomer_otveta']."-".$com."<br>";
               
                            
            }
                            
while ($otvet = mysql_fetch_array($res_otvet));  
            }
while ($quests = mysql_fetch_array($results));  

  Ответить  
 
 автор: Trianon   (08.07.2009 в 16:23)   письмо автору
 
   для: Leon22   (08.07.2009 в 15:44)
 

неплохо было бы привести дамп структуры и данных тех таблиц, которые задействованы в обработке.
Ну и операторы, формирующие запросы показать.
А сейчас, глядя на это
do {
if($otvet
кроме "переменная $otvet не определена" сказать ничего нельзя.

  Ответить  
 
 автор: Leon22   (08.07.2009 в 16:34)   письмо автору
 
   для: Trianon   (08.07.2009 в 16:23)
 

дамп базы:

-- 
-- Структура таблицы `otvet`
-- 

CREATE TABLE `otvet` (
  `id_test` int(5) NOT NULL default '0',
  `nomer_otveta` int(5) default NULL,
  PRIMARY KEY  (`id_test`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251;

-- 
-- Дамп данных таблицы `otvet`
-- 

INSERT INTO `otvet` VALUES (1, 1);
INSERT INTO `otvet` VALUES (2, 2);
INSERT INTO `otvet` VALUES (3, 1);
INSERT INTO `otvet` VALUES (4, 4);
        

весь код:
$mysql= mysql_connect($host,$user,$pass)
  or die('Ошибка подключения к MySQL-серверу' . mysql_error());
  mysql_select_db("test",$mysql);
   $results = mysql_query("SELECT * FROM quest WHERE type='s1'",$mysql);
  $quests = mysql_fetch_array($results);
        /* echo "ID ".$quests['id']." user"; */
    $res_otvet = mysql_query("SELECT * FROM otvet ",$mysql);
  $otvet = mysql_fetch_array($res_otvet);    
         
        do  
                           {
                           if($otvet['nomer_otveta']==$a){$com="Ok";} else {$com="Bed";}
                            $a= $_REQUEST[otvet.$quests['id']]; 
                        
                             
    echo "Vopros nomer ".$a."".$otvet['id_test']." user";
        do  {
        
               echo " prav".$otvet['nomer_otveta']."-".$com."<br>";
               
                            
            }
                            
while ($otvet = mysql_fetch_array($res_otvet));  
            }
while ($quests = mysql_fetch_array($results));  

  Ответить  
 
 автор: Trianon   (08.07.2009 в 16:40)   письмо автору
 
   для: Leon22   (08.07.2009 в 16:34)
 

А таблица quest ?

  Ответить  
 
 автор: Trianon   (08.07.2009 в 16:40)   письмо автору
 
   для: Leon22   (08.07.2009 в 16:34)
 

имена полей в форме оставляют желать лучшего

  Ответить  
 
 автор: Leon22   (08.07.2009 в 16:48)   письмо автору
 
   для: Trianon   (08.07.2009 в 16:40)
 

как яхту назовешь так она и поплывет))
-- 
-- Структура таблицы `quest`
-- 

CREATE TABLE `quest` (
  `id` int(2) NOT NULL auto_increment,
  `type` varchar(5) default NULL,
  `questions` varchar(255) default NULL,
  `variant1` text,
  `variant2` text NOT NULL,
  `variant3` text NOT NULL,
  `variant4` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

-- 

  Ответить  
 
 автор: Trianon   (08.07.2009 в 17:08)   письмо автору
 
   для: Leon22   (08.07.2009 в 16:34)
 

<?
$mysql
mysql_connect($host,$user,$pass)
  or die(
'Ошибка подключения к MySQL-серверу' mysql_error());

$res_otvet mysql_query("SELECT id_test, nomer_otveta FROM otvet ",$mysql)
  or die(
'Ошибка получения ответов' mysql_error());
for(
$list = array(); $row mysql_fetch_row($res_otvet);  $list['otvet'.$row[0]] = $row[1]) ;

foreach(
$_REQUEST as $key  => $val)
  if(isset(
$list[$key]))
    echo 
"$key: " . ($list[$key] == $val 'Ok' 'Bad') . "<br>";

  Ответить  
 
 автор: Николай2357   (08.07.2009 в 17:36)   письмо автору
 
   для: Trianon   (08.07.2009 в 17:08)
 

Поправьте опечатку в форече, а то он еще пол дня просидит.

  Ответить  
 
 автор: Leon22   (08.07.2009 в 17:56)   письмо автору
 
   для: Николай2357   (08.07.2009 в 17:36)
 

спс больщущее! чтоб я без вас делал) опечатку я поправил)

  Ответить  
 
 автор: GeorgeIV   (08.07.2009 в 16:54)   письмо автору
 
   для: Leon22   (08.07.2009 в 15:44)
 

                           if($otvet['nomer_otveta']==$a){$com="Ok";} else {$com="Bed";} 
                            $a= $_REQUEST[otvet.$quests['id']];  

Почему сначала идет проверка на равенство $a, а затем присвоение $a реального значения?

  Ответить  
 
 автор: Leon22   (08.07.2009 в 17:03)   письмо автору
 
   для: GeorgeIV   (08.07.2009 в 16:54)
 

> $a= $_REQUEST[otvet.$quests['id']]; [/code]
>Почему сначала идет проверка на равенство $a, а затем присвоение $a реального значения?
поменял немного местами, все равно, скрипт показывает что правильные ответы - не правильные, и в конце запутывается:
Vopros nomer 1 user prav1-Bed
Vopros nomer 2 user prav2-Bed
Vopros nomer 3 user prav1-Bed
Vopros nomer 4 user prav4-Bed
Vopros nomer user prav-OkVopros nomer user prav-OkVopros nomer user prav-Ok

    do  
                           {
                          
                            $a= $_REQUEST[otvet.$quests['id']]; 
                            /*  echo "<FONT SiZE=4>","Radio: ",$a,"</FONT><BR>"; */  
                              
    
        do  {
        echo "Vopros nomer ".$a."".$otvet['id_test']." user";
        if($otvet['nomer_otveta']==$a){$com="Ok";} else {$com="Bed<br>";}    
               echo " prav".$otvet['nomer_otveta']."-".$com."";
               
                        
            }

  Ответить  
Rambler's Top100
вверх

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