2013-12-09 7 views
0

Привет, ребята Мне было интересно, можете ли вы помочь мне с увеличением переменной оценки внутри моего кода. В настоящее время я программирую онлайн-викторину с использованием php и хочу, чтобы оценка увеличивалась на 1 каждый раз, когда они выбирают кнопку отправки, а конкретный переключатель установлен, но когда переменная передается на страницу результатов, она появляется как 0Приращение переменной счетчика php через функцию javascript

главная страница викторины

<?php session_start(); ?> 
<html> 
<head> 
<title> World Cup Quiz </title> 
</head> 

<script> 

function Score() 
{ 
    if(document.getElementById('correct_answer').checked) 
    { 
     <? 
     $_SESSION['score']=$userScore]+1; 
     ?> 
    } 
    else if(document.getElementById('wrong_answer1').checked) 
    { 
     //Wrong 1 radio button is checked 
    } 
    else if(document.getElementById('wrong_answer2').checked) 
    { 
     //Wrong 2 radio button is checked 
    } 
    else if(document.getElementById('wrong_answer3').checked) 
    { 
     //Wrong 3 radio button is checked 
    } 

} 

</script> 


<body> 
<div align = center><strong> World Cup Quiz</strong></div> 
<br /> 

<div align =center> 
<?php 



include ("dbConnect.php"); 

if (!isset($_SESSION['number'])) 
{ 
    $_SESSION['number']=1; 
} 

if (!isset($_SESSION['score'])) 

{ 
    $_SESSION['score']=0; 

} 


$questionNumber = $_SESSION['number']; 
$userScore=$_SESSION['score']; 
$number= rand(1,4); 

//search database for generated number and match ID 
$dbQuery= "SELECT * FROM `questions 1.0` WHERE `ID` =$number"; 
$dbResult=mysql_query($dbQuery); 

echo "Question:".$questionNumber."/5<br>"; 

//Assign variables to each attribute 

while ($dbRow=mysql_fetch_array($dbResult)) 

{ 
if ($_SESSION['number']>5) 

    { 
     header("Location: results.php"); 
     $_SESSION['number']=1; 
     break; 


    } 

    $theID=$dbRow["ID"]; 
    $theQuestion=$dbRow["Question"]; 
    $theAnswer1=$dbRow["Correct Answer"]; 
    $theAnswer2=$dbRow["Wrong Answer 1"]; 
    $theAnswer3=$dbRow["Wrong Answer 2"]; 
    $theAnswer4=$dbRow["Wrong Answer 3"]; 
    $_SESSION['number']=$questionNumber+1; 


} 

    //Print Questions and Answers 


    echo '<strong>'."$theQuestion".'</strong><br>'; 
    ?> <form name="correctAnswer" form method="post" action="quiz.php" onSubmit="Score()"> 
    <?php 
    echo "$theAnswer1";?> <input type="radio" id="correct_answer" name="correctAnswer"> 
    <?php 
    echo "<br>$theAnswer2"; ?> <input type="radio" id="wrong_answer1" name="wrongAnswer1"> 
    <?php 
    echo "<br>$theAnswer3"; ?> <input type="radio" id="wrong_answer2" name="wrongAnswer2"> 
    <?php 
    echo "<br>$theAnswer4"; ?> <input type="radio" id="wrong_answer3" name="wrongAnswer3"> 
    <input type="hidden" name="score" value="userScore"> 
    <br><input type="submit" value="Submit Answer"> 
    </form> 


</div> 
</body> 

</html> 

И страница результатов

<?php session_start(); ?> 
<html> 

</head> 

<title> Result</title> 

<body> 

    <?php 

    $score=$_SESSION['score']; 

    echo "Congratulations you scored $score /5" 

    ?> 

    <form action="menu.php"> 

    <input type="submit" value="Return to Main Menu"> 
    </form> 

</body> 

</html> 

Надеется, что вы можете помочь

Благодарности

+0

$ _SESSION [ 'оценка'] = $ userScore] + 1; должен быть $ _SESSION ['score'] = $ userScore + 1; может быть ? – Maximus2012

+0

Вы не можете смешивать JS и PHP, как это. PHP в этой функции будет выполняться один раз (когда запрашивается страница). JS будет выполняться при указании и ничего не делать (поскольку он не может «видеть» код PHP) – kero

+1

Вам нужно понять разницу между программированием CLIENT и SERVER. События пользовательского интерфейса происходят на клиенте (JS), и события PHP происходят на сервере. Вы не можете смешивать код клиента и сервера и ожидать, что они будут работать так, как вы показываете. –

ответ

0

Вы не можете установить переменную сеанса php с javascript на стороне клиента. Ваш javascript должен отправить в php-файл на стороне сервера (с ajax), который может вернуть новое значение

0

Вы можете сохранить оценку в cookie, доступном как js, так и php.

Код JavaScript сторона:

<script type="text/javascript"> 
    // When starting, set the score to 0. 
    setCookie("score", 0, minutesuntilexpires) 

    function score(){ 
    ... 
     minutesuntilexpires = 60; 
     score = getcookie("score"); 
     setCookie("score", score + 1, minutesuntilexpires); 
    ... 
    } 

function setCookie(name, value, minutes) { 
    minutes = typeof minutes !== 'undefined' ? minutes : 60 ; 
    var date= new Date(); 
    if (minutes < 0){  
     expires = "Thu, 01 Jan 1970 00:00:01 GMT"; 
    } 
    else{ 
     date.setTime(date.getTime()+(minutes*60*1000)); 
     expires = date.toUTCString(); 
    }   

    var value = escape(value) + "; expires="+expires; 

    document.cookie=name + "=" + value + '; path=/'; 
} 

function getCookie(name) { 
    var value = document.cookie; 
    var start = value.indexOf(" " + name + "="); 
    if (start == -1) { 
     start = value.indexOf(name + "="); 
    } 
    if (start == -1) { 
     value = null; 
    } 
    else { 
     start = value.indexOf("=", start) + 1; 
     var end = value.indexOf(";", start); 
     if (end == -1) { 
      end = value.length; 
     } 
     value = unescape(value.substring(start,end)); 
    } 
    return value; 
} 

</script> 

PHP сторона:

if (isset($_COOKIE['score'])){ 
    $score = $_COOKIE['score']; 
} 
Смежные вопросы