0

アプリケーションに 2 つの選択ボックスがあります。ユーザーがページを送信すると、選択ボックスで選択 (強調表示) されたすべての学生が選択ボックス#studentaddに追加され#studentselectます。ただし、最初の選択ボックスで選択されていないオプションは、2 番目の選択ボックスに追加されません。

私の質問は、「#studentadd」選択ボックス内で選択されていないオプションを「#studentselect」選択ボックスに追加するにはどうすればよいですか?

私のphp/ajaxの問題は、ajaxを使用して別のphpファイルに移動し、#studentadd選択ボックスの学生をデータベースに挿入することです。ただし、挿入は、#studentdd選択ボックス内の学生の蛍光ペンに対してのみ発生します。`#studentadd' で選択されていないオプションの挿入は実行されません。

以下は選択ボックス#studentaddです:

<select multiple="multiple" name="addtextarea" id="studentadd" size="10">
    <option value='1'>u08743 - Joe Cann</option>
    <option value='4'>u03043 - Jill Sanderson</option>
    <option value='7'>u08343 - Craig Moon</option>
</select>

以下は、生徒を追加する選択ボックスです。

<select id="studentselect" name="studenttextarea"></select>

以下はjquery/ajaxです:

 function submitform() {    

    $.ajax({
        type: "POST",
        url: "updatestudentsession.php",
data: { 
    addtextarea:$('#studentadd').val()
        },
        dataType:'json',  //get response as json
        success: function(result){
                    if(result.errorflag){

       //do your stuff on getting error message
      var newHtml="<span style='color: red'>"+result.msg+"</span>"; 
      $("#targetdiv").html(newHtml);  //i am displaying the error msg here

      $('#targetdiv').show();

    }else{
       //you got success message

       var newHtml="<span style='color: green'>"+result.msg+"</span>"; 
            $("#targetdiv").html(newHtml);


           //append students you want to add to assessment into student exist select box 
            var selectedOption = $('select#studentadd');
            $('select#studentselect').append(selectedOption.html()); 

             //blank #studentadd select box
             $('#studentadd').empty(); 

                $('#targetdiv').show();
        }
    }
  });        
}

updatestudentsession.php以下は、ajax からアクセスされ、データをデータベースに挿入する別の php ファイルです。

$studentid = (isset($_POST['addtextarea'])) ? $_POST['addtextarea'] : array(); 
$sessionid = (isset($_POST['Idcurrent'])) ? $_POST['Idcurrent'] : array();   

$insertsql = "
INSERT INTO Student_Session
(SessionId, StudentId)
VALUES
(?, ?)
";

if (!$insert = $mysqli->prepare($insertsql))
{
    // Handle errors with prepare operation here
}      

$success = true;

foreach($studentid as $id)
{ 
    $insert->bind_param("ii", $sessionid, $id);

    if($insert->execute() === false)
    {
        $success = false;
    }
}

$insert->close();

if($success)
{
    echo json_encode(array('errorflag'=>false,'msg'=>"Students have been successfully added into the Assessment"));
}
else
{
    echo json_encode(array('errorflag'=>true,'msg'=>"An error has occured, Students have not been added into the Assessment"));
}
4

1 に答える 1

1

ああ、送信時にすべてのターゲットオプションを選択したい:

function submitform() {    
  $('#studentadd option').attr('selected', 'selected');

またはあなたは意味しました

  $('#studentselect option').attr('selected', 'selected');

??

于 2013-01-12T08:45:53.343 に答える