значения сеанса php минимум одно значение - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь создать компьютерный экзамен.я сохраняю выбранный пользователем ответ как сеанс php, используя ajax

<script type="text/javascript">
//if the button if check
$( ".form-check-input" ).on( "click", function() {

    var checkedvalue = $("input:checked" ).val();
    var ques = <?php echo $_SESSION['ques']; ?>;
    alert(ques);
    $.ajax({
        url: "ajax.php",
        method: "POST",
        data: { 
            ques:ques,
            checkedvalue:checkedvalue,
            request:"add"
            }
    }).done(function(count) {
        $( "#log" ).html(checkedvalue + " is checked2!" ).show();
        $( "#log2" ).html(count + " is checked2!" ).show();
        //  setTimeout(hideMessage, 2000);
    });
});
//$( ".form-check-input" ).attr("checked",false).html("is checked2!" ).show();
</script> 

, это скрипт ajax.php

<code><?php
// START THE SESSION
session_start();

// CONFIGURATION
require("db.php");

$conn=new mysqli ($dbServername, $dbusername, $dbpassword, $dbname);

// PROCESS REQUESTS
switch ($_POST['request']) {
    case "add":
        // ITEMS WILL BE STORED IN THE ORDER OF
        // $_SESSION['cart'][PRODUCT ID] = QUANTITY

        if ($_POST['checkedvalue'] ==TRUE) {
            $_SESSION['option'][$_POST['ques']][$_POST['checkedvalue']] = 1;
            echo '<pre>';
            var_dump($_SESSION['option'][$_POST['ques']][$_POST['checkedvalue']]);
            echo '
';echo $ _SESSION ['option'] [$ _ POST ['Ques']] [$ _ POST ['checkedvalue']];} // здесь я пытаюсь проверить, выбирает ли пользователь другой ответ, который был сохранен в сеансе, чтобы он мог удалить ранее выбранный ответ в сеансе elseif ($ _ SESSION ['option'] [$ _ POST ['Ques']] [$ _ POST ['checkedvalue']]> 1) {unset ($ _ SESSION ['option'] [$ _ POST ['Ques']] [$ _ POST ['checkvalue']]);} else {echo 'yes';} перерыв;

эта проблема заключается в том, что если пользователь снимает флажок с ответа, сеанс php все еще сохраняется, но я не могу получить доступ к этому конкретному ответу в массиве сеансов, чтобы сбросить этот конкретный ответ, а затем сохранить новый выбранный ответ ввопросы php сессии по вопросу

htm

<?php
session_start();

require("db.php");
?>

<!DOCTYPE HTML>


Examination Application




                <!-- Bootstrap core JavaScript -->
     





<?php// require 'opera.php' ?>

<?php



if(!isset($_SESSION['user']))
{
 echo '<a href="?username=moses&page=1">';

 $_SESSION['user'] =$_GET['username'];
 

}else{
//     if(isset($_POST['submit']))
//     {
//       // $submit=='Next Question' && isset($_POST['OPTION_A'])
//       $ans= $_POST['optradio'];
//       $ques= $_POST['ques'];
//      echo $ques;
//      echo $ans;
//      echo session_id();
//      $insertans = $conn->query("insert into useranswers(q_num, ans, session_id) values('$ques', '$ans','".session_id()."')") ;
// 		if($insertans == TRUE){
//             echo 'inserted';
//         }else{
//             echo 'not inserted buddy';
//         }		

      
//     }else{
//         echo 'yes';
//     }
  
//    //unset($_SESSION['user']);
//    //session_destroy();

   // CONFIGURATION
   
   $url = $_GET['page'];
   echo $url;
if($_GET['page']==""){
    
//header("location:index.php");
    $num = 1;
    }else{
        $num = $_GET['page'];
    }
  $sql1 = "Select * from questions WHERE '$num' = q_num";
  $query_count=$conn->query($sql1);
  $res =$conn->query($sql1);
  while($row = $res->fetch_assoc()){
  $_SESSION['ques'] = $row['q_num'];
  
// echo '';
echo ' ';
  echo ''.$row['q_num'].'.'.$row['ques'].'';

?>
  
  
  
  
  
  
  
  
  
  
  
  
  <?php
  }



  echo '<div id="log">'; 
  echo ''; 



  if(isset($_SESSION['option']))
  {
    echo '';
  var_dump($_SESSION['option']);
  echo '
';echo '
' . print_r($_SESSION['option'], TRUE) . '
';} else {echo 'еще ничего';}}?>

1 Ответ

0 голосов
/ 21 февраля 2019

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

$(".form-check-input").change(function() {
    // Perform ajax submission here
    $.ajax({
        url: "ajax.php",
        method: "POST",
        data: { 
            ques:ques,
            checkedvalue: this.checked,
            request:"add"
        }
    });
});

Затем на стороне php вы можете обновить соответствующие значения в сеансе в зависимости от "проверенная переменная сверху.

if ($_POST["checkedvalue"]) {
    // Question is check
} else {
    // Question not check
}
...