Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2014, 14:52   #1
beginner@
Новичок
Джуниор
 
Регистрация: 10.05.2014
Сообщений: 4
По умолчанию PHP БД подсчет правильных и не правильных ответов в тесте

Здравствуйте, помогите пожалуйста. Я вывожу вопрос и ответы из БД. В данный момент я пытаюсь сделать подсчет правильных ответов, но к сожалению не получается помогите пожалуйста что не так?
Код HTML:
<html>
<head>
<title><? echo 'test' ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
PHP код:
<?php 
 
$host
='localhost'
$user='admin'
$password='12345'
$db='baza'
$db_table_to_show 'user';
$db_table_to_show1 't_vorosy';
$mysql_bd mysql_connect($host$user$password) or die("Ошибка соединения! ".mysql_error()); 
 
mysql_query("SET NAMES utf8") or die(mysql_error());
mysql_select_db($db) or die("Нет соединения с БД: ".mysql_error()); 
 
 
    
//$copletetest_question=mysql_query("select * from copletetest ") or die(mysql_error());
    
$nomer_question=mysql_query("select * from question_numbers, copletetest where question_numbers.userID=copletetest.userID and question_numbers.date=copletetest.TestDate and question_numbers.time=copletetest.TestTime") or die(mysql_error());
    
//$nomer_question2=mysql_query("select max(id) from question_numbers") or die(mysql_error());
    //$nomer_question3=mysql_query("select max(id) from copletetest") or die(mysql_error());
    
$n_q mysql_fetch_assoc($nomer_question);
    
//$n_q2 = mysql_fetch_assoc($nomer_question2);
    //$n_q3 = mysql_fetch_assoc($nomer_question3);
    
$caa $n_q['countallanswer'];
    
//echo 'caa'.$caa;
    
$id=$n_q['id'];
    
//echo 'id'.$id;
    
if($caa==0)
    {
    
$ch=$n_q['q1'];
    
    }
    elseif(
$caa==1)
    {
    
$ch=$n_q['q2'];
    }
    elseif(
$caa==2)
    {
    
$ch=$n_q['q3'];
    }
    elseif(
$caa==3)
    {
    
$ch=$n_q['q4'];
    }
    elseif(
$caa==4)
    {
    
$ch=$n_q['q5'];
    }
    elseif(
$caa==5)
    {
    
$ch=$n_q['q6'];
    }
    elseif(
$caa==6)
    {
    
$ch=$n_q['q7'];
    }
    elseif(
$caa==7)
    {
    
$ch=$n_q['q8'];
    }
    elseif(
$caa==8)
    {
    
$ch=$n_q['q9'];
    }
    elseif(
$caa==9)
    {
    
$ch=$n_q['q10'];
    }
    elseif(
$caa==10)
    {
    
$ch=0; echo 'тест завершен'
    }
    
$question_result mysql_query("select question, vvodotveta from t_vorosy where t_vorosy.id='$ch'") or die(mysql_error());//запрос для вывода вопроса
    
$answer_result mysql_query("select answer, correct, question_id from t_otvet where t_otvet.question_id='$ch'") or die(mysql_error());//запрос для вывода ответа
    
$row mysql_fetch_assoc($question_result);
    echo 
'<FORM METHOD=POST>';
    
//$c_q = mysql_fetch_assoc($copletetest_question);
    
echo $row["question"].'</br>';//вывожу вопрос
    
    
if ($row["vvodotveta"]==1//если поле ввод ответа в БД равно 1 то выводим текстовое поле для ответа
    
{   
        echo 
' <input name="text" type="text" value="'.$data['answer'].'">' ;
    } else while(
$data mysql_fetch_assoc($answer_result)){ //иначе выводим варианты ответов с помощью радио кнопок
           
echo '<label><input name="radio" type="radio" value="'.$data['correct'].'">'.$data['answer'].'</label></br>';
    
        
        }  
//подсчет правильных и не правильных ответов
            
if ($_POST[$data['correct']] == //поле correct в таблице t_otvet имеет тип бит,т.е. если ответ правильный то это поле равно 1, иначе ответ неверный 
    
{
        echo 
"verno" ;
        
        
//Увеличиваем количество правильных ответов на 1
        
$ball++;
        
$sql_TestAnswered =mysql_query("UPDATE copletetest SET TestAnswered='$ball' WHERE id='$id'") or die("error: ".mysql_error());//заполняю поле TestAnswered(кол-во правильных ответов) в бд 
    
}
     
    else 
    {
        echo 
"ne verno";
    }
          
$caa=$caa+1;
           echo   
$sql2 =mysql_query("UPDATE copletetest SET countallanswer='$caa' WHERE id='$id'") or die("error: ".mysql_error()); $caa//заношу в бд число, например что первый вопрос отвечен или пройден
echo'<input name="submit" type="submit" value="следующий вопрос"></form>';
    
/*echo '  
<FORM>
<input TYPE="button" VALUE=" далее " ONCLICK="HomeButton()"> <script>
function HomeButton()
{
location.href="index1(2).php";
}
</script>
</FORM>'; */
 
mysql_close($mysql_bd);
 
 
?>
Код HTML:
</body>
</html>
beginner@ вне форума Ответить с цитированием
Старый 11.05.2014, 13:24   #2
beginner@
Новичок
Джуниор
 
Регистрация: 10.05.2014
Сообщений: 4
По умолчанию

Пожалуйста подскажите что не так, почему не подсчитывает правильный и не правильный ответ? очень нужно, скоро отчитываться нужно...
beginner@ вне форума Ответить с цитированием
Старый 12.05.2014, 02:38   #3
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Структуру БД хотя бы приложите.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 12.05.2014 в 02:42.
Fenex вне форума Ответить с цитированием
Старый 12.05.2014, 11:42   #4
beginner@
Новичок
Джуниор
 
Регистрация: 10.05.2014
Сообщений: 4
По умолчанию Структура БД

Fenex, здравствуйте. Вот структура БД такая.
Изображения
Тип файла: jpg Структура БД.jpg (76.6 Кб, 126 просмотров)
beginner@ вне форума Ответить с цитированием
Старый 12.05.2014, 12:15   #5
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
В данный момент я пытаюсь сделать подсчет правильных ответов, но к сожалению не получается помогите пожалуйста что не так?
Учитывая приложенную структуру БД - то делать в цикле перебором. Получаете соответствующую запись в таблице question_numbers - и перебираете все поля q*.

Решение задачи совсем не фонтан, конечно. Почему бы не сделать в одной таблице несколько записей с одним user_id? Одна запись - один вопрос. Тогда будет легко делаться выборка по конкретному юзеру:
SELECT * FROM question_numbers WHERE UserID = $user_id;
Или, например, элементарный запрос для получения количества верных ответов определённого пользователя:
SELECT COUNT(*) FROM question_numbers WHERE UserID = $user_id AND correctly = TRUE;
^-.-^ My GitHub

Последний раз редактировалось Fenex; 12.05.2014 в 12:18.
Fenex вне форума Ответить с цитированием
Старый 12.05.2014, 13:08   #6
beginner@
Новичок
Джуниор
 
Регистрация: 10.05.2014
Сообщений: 4
По умолчанию

Fenex, подскажите пожалуйста как проверить правильно ответил пользователь на вопрос или нет? Как условие прописать, чтобы по нажатию кнопки "следующий вопрос" проверялось правильно ли ответил пользователь или нет?
beginner@ вне форума Ответить с цитированием
Старый 14.05.2014, 11:18   #7
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Я не понял вопроса.
Как проверить верность ответа данного юзером? Сравнить правильный ответ с ответом, пришедшим от юзера.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript поиск правильных ответов ArcaN0id Помощь студентам 1 24.03.2011 21:50
"Тест на знание ПК с подчетом правильных ответов" Александр Маслов Помощь студентам 1 11.12.2010 11:02
"Тест на знание ПК с подчетом правильных ответов" Александр Маслов Помощь студентам 1 11.12.2010 11:00
как подсчитать кол-во правильных ответов?delphi tatiana74 Помощь студентам 6 11.02.2010 11:47