Приложение викторины с отрицательным счетом - PullRequest
1 голос
/ 10 января 2012

У меня есть приложение для викторины fb, которое работает нормально, если мы проверим правильный вопрос, а затем перейдем к следующему вопросу, но оно показывает отрицательный балл, когда я несколько раз меняю варианты

Я звоню ajax onchange, выбирая опцию обновления страницы оценки и сохраняя счет в сессии

в этих кодах работает нормально, если мы выбираем правильный ответ, а затем неправильный, поэтому он уменьшается, но при выборе неправильного, а затем мы получаем отрицательный результат из-за

$_SESSION['score']--;

Как решить эту проблему ???

    // check if this option is correct for current question
    $check_anwer_query = mysql_query("select * from tbl_option where ques_id=$ques_id and opt_id=$opt_id") or die(mysql_error());

    if(mysql_num_rows($check_anwer_query))
    {
        $rs = mysql_fetch_array($check_anwer_query);

        if($rs['opt_value']==1) 
        {
            $_SESSION['score']++;
            //$_SESSION[$ques_id]='1';
        }
        else if($_SESSION['lastq']==$ques_id) // check if option is changed, 
        {   

            $_SESSION['score']--;

        }
        if(isset($_SESSION['user']))
        {
            mysql_query("delete from tmp_quiz where ques_id=$ques_id and uid='".$_SESSION['user']."'") or die(mysql_error());
            if($rs['opt_value']==1) 
            {   
                mysql_query("insert into tmp_quiz(ques_id,opt_id,uid,is_correct) values($ques_id,$opt_id,'".$_SESSION['user']."',1)") or die(mysql_error());    
            }
            else
            {
                mysql_query("insert into tmp_quiz(ques_id,opt_id,uid,is_correct) values($ques_id,$opt_id,'".$_SESSION['user']."',0)") or die(mysql_error());
            }
        }
        else
        {
            mysql_query("delete from tmp_quiz where ques_id=$ques_id and tmp_id='".$_SESSION['tmp_id']."'") or die(mysql_error());
            mysql_query("insert into tmp_quiz(ques_id,opt_id,tmp_id) values($ques_id,$opt_id,'".$_SESSION['tmp_id']."')") or die(mysql_error());
        }

    }   

    $_SESSION['lastq'] = $ques_id; // assign current question as last question answred
?>

Ответы [ 2 ]

1 голос
/ 11 января 2012
//Logic for Score Start

        $rs = mysql_fetch_array($check_anwer_query);

        if($rs['opt_value']==1) 
        {
            $_SESSION['score']++;
            $_SESSION["test_".$ques_id]='1'; // if Answer is Correct Set Session
        }
        elseif($_SESSION['lastq']==$ques_id) // check if option is changed
        {   
            if(isset($_SESSION["test_".$ques_id])) { // if Last Ansewer is same as current question and last answer is yes then substract score
            $_SESSION['score']--;
            unset($_SESSION["test_".$ques_id]); }   // Unset That Session
        }
        elseif(isset($_SESSION['test_'.$_SESSION['lastq']])) // If Last Question Session is still exists Then Unset That Question Session
        { 
            unset($_SESSION['test_'.$_SESSION['lastq']]);
        }

        //Logic for Score End
1 голос
/ 10 января 2012

Вы не должны делать относительные вычисления, так как это требует, чтобы вы были уверены, что состояние, совместно используемое между пользовательским интерфейсом и вашим сеансом, синхронизировано на 100%, и что никакие действия пользователя не выходят из строя (я полагаю, в этом и заключается ваша проблема).

Вместо этого сохраните все выбранные ответы в сеансе.При желании отобразить счет пользователя, просмотрите все выбранные ответы и рассчитайте число, основываясь на этом.Делайте каждый раз, когда вы хотите отобразить счет пользователя, чтобы счет всегда был актуальным и точным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...