2012-02-24 5 views
1

Я делаю онлайн-экзамен. Я хочу свести к минимуму количество запросов к базе данных. Поэтому я прошу все вопросы в тесте на один ход. После этого я должен помнить все вопросы, которые пользователь попытался и их ответы. Мой план, чтобы сохранить ответы в переменной PHP сессии, как этотприсвоение переменной javascript переменной php session

$('input[type=radio]').click(function() 
{ 
    var id = ($(this).parent().attr('id')); 
    id = id.slice(4); 
    $('#nav'+id).css('color','red'); 
    <?php $_SESSION['ques['id']']= ?> $(this).val() <?php ;?> 
}); 

В приведенном выше коде следующие строки, чтобы изменить цвет покушений вопросов.

var id = ($(this).parent().attr('id')); 
    id = id.slice(4); 
    $('#nav'+id).css('color','red'); 

Здесь id является идентификационным номером вопроса. Проблема в Я получаю следующее сообщение об ошибке

Parse error: syntax error, unexpected ';' in /var/www/sites/onlinetest/test.php on line #x 

Кроме того, я уверен, что следующий неправильно

$_SESSION['ques['id']'] 

, поскольку идентификатор является переменной Javascript здесь. Пожалуйста, помогите мне. Кроме того, я признателен, если любое другое лучшее решение, чем «хранение в переменных сеанса» размещен

+1

Возможный дубликат [Установить переменную сеанса с помощью javascript в PHP] (http://stackoverflow.com/questions/3590293/set-session-variable-using-javascript-in -php) –

+0

Это не сработает. Вам понадобятся [запросы AJAX.] (Http://stackoverflow.com/search?q=%5Bjavascript%5D+php+session+variable+ajax&submit=search) –

+0

В качестве примечания, PHP выполняется на стороне сервера. Если вы включите его в свой javascript, он будет выполняться до того, как javascript будет загружен/запущен и не будет работать. –

ответ

1

1) Ваша проблема заключается в последней строке блока click. Я не совсем уверен, что вы пытаетесь сделать, но у вас есть <?php ; ?>, а точка с запятой заставляет ваш скрипт не разбираться. Первая часть

<?php $_SESSION['ques['id']']= ?>

ничего не делает ни. Похоже, вы пытаетесь присвоить значение Javascript $(this).val() для PHP SESSION global, чего вы не можете сделать. Вам нужно будет сделать AJAX-вызов на ваш сервер, чтобы обновить сеанс var.

2) Используйте двойные кавычки при вложенности массивов следующим образом: $_SESSION["$ques[id]"]

Надеется, что это помогает.

0

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

магазина Решения в некоторой скрытой переменной форме, то в форма время отправки вы можете получить в GET или POST переменные

Благодаря

+0

Я не могу сделать это, как если бы пользователь обновил страницу, все данные были потеряны. –

+0

мы можем сделать один вызов ajax, который передает это значение javascript на некоторую php-страницу, и в то время вы можете хранить эти данные в сеансе –

0

код, кажется, не будет работать, как вы ожидали, даже если вы снимите errors.So использовать Ajax в JQuery

1

Просто храните ответы в JS и отправляйте их на сервер при ответе на последний вопрос.

Вот очень простой пример хранения в массив:

var answers=[]; 

$('input[type=radio]').click(function() 
{ 
    var id = ($(this).parent().attr('id')); 
    id = id.slice(4); 
    $('#nav'+id).css('color','red'); 
    answers.push($(this).val()); 
}); 

Отправив его ServerSide:

$.ajax({ 
    type: 'POST', 
    data: {answers : answers}, 
    url: '/path/myfile.php', 
    success: function(data) {}, 
    error: function() {} 
}); 

Поймать его в PHP:

if (isset($_POST['answers'])) { 
    $answers = $_POST['answers']; 
}else{ 
    die('error'); 
} 

Это способ, которым я сделайте это, просто покажите/скройте вопросы с помощью javascript.

Если вы обновляете страницу для каждого вопроса, вы можете просто сохранить ответы в PHP при каждой загрузке новой страницы, должны быть довольно прямыми, если вы не пытаетесь использовать PHP-код внутри вашего JS-файла.

+0

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

0

Проблема с PHP заключается в том, что она выполняется перед javascript, поэтому вы не можете просто добавить php и попытаться назначить переменную javascript в переменную php.

Вам нужно будет использовать ajax для решения вашей проблемы. Сделайте запрос ajax и отправьте все значения через GET. После этого вы можете использовать все переменные в вашем php-файле, где вы выполнили запрос ajax. Итерация через все переменные и вставка их в сеанс

Смежные вопросы