0

これが私の質問です:

X クラスを表示する動的リストがあります。クラスを選択すると、そのクラスのすべての生徒が表示されます。ユーザーが「送信」をクリックしたときに、insert ステートメントをデータベースに送信したいと考えています。送信ボタンのコードはどこにありますか?

私の試み:疑似コード/構造

Web サーバー上の 1 つのフォルダーに配置されたファイル: Index.php および getStudentList.php

インデックス.php

<script>
function showStudents(str)
blabla
xmlhttp.open("GET","getStudentList.php?q="+str, true);
xmlhttp.send();
</script>
...
<div>
html display goes here, as well as the form itself
</div>

getStudentList.php

<script>
logic for javascript goes here which connects to a db and inserts attendance info
</script>
<?php
connect to db
query students in class
echo attendance form
?>

詳細コード: Index.php

<!--start script for AJAX attendance display-->
<script>
function showStudents(str)
{
if (str=="") {
  document.getElementById("attendanceForm").innerHTML="";
  return;
}
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("attendanceForm").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getStudentList.php?q="+str,true);
xmlhttp.send();
}
<script>
<div>
    <?php
        //identify teacher's classes
        $school_connection = New school();
        $arrayTeachersClasses = $school_connection->queryTeachersClasses($_SESSION['teacherID']);
        //returns array of all classes taught
        //echoes today's date
        echo Date("l F d, Y");
        //create list so teacher can pick class
        echo "<form>";
        echo "<select name = \"courses\" onchange = \"showStudents(this.value)\">";
        echo "<option value=\"\">Select a class:</option>";
        $i = 0;//counter        
        while ($row = $arrayTeachersClasses[$i]) {
            echo "<option value=\"". $row[0] . "\">";
            echo $row[1] . "  ". $row[2] . "-L". $row[3] . " Room " . $row[4];
            echo "</option>";
            $i++;
        }
        echo "</select>";
        echo "</form>";


    /***
    //Sample "Select a Class" list
    <form>
    <select name="users" onchange="function(this.value)">
        <option value="">Select a class:</option>
        <option value="0">09:00:00  BEG-L1 Room303</option>
        <option value="1">TIME SUBJ-LEVEL ROOM</option>
        <option value="2">ditto</option>
        <option value="3">ditto</option>
    </select>
    </form>
    */

        $teacherID = $_SESSION['teacherID'];
        //echo $teacherID;


    ?>
</div>
<br />
<div id="attendanceForm">
    <p><b>Attendance List:</b></p>
    Please Select a Class
</div>

getStudentList.php

<script>
//Other JS stuff
$(document).ready(function() {

    //if submit button is clicked
    $('#submit').click(function () {        

    $i = 0;//counter
    var attendanceData = new Array();
    //Get the data for each student
    while ($row = $arrayStudentList[$i]) {
    var studentID = $('input[name=' . $row[0] . ']');
        if (studentID.val()=='') {
            studentID.addClass('highlight');
            return false;
        } else studentID.removeClass('highlight');

    $row[2] = studentID.val;
    $attendanceData[$i] = $row;
    $i++;
    }

    $row = $attendanceData[0];
    $record = $row[2];
    alert("My First JavaScript");

        //cancel the submit button default behaviours
        return false;
    }); 
}); 
</script>
4

1 に答える 1

0

これを行うには多くの方法があります... 以下は、ポストバックまたは ajax を使用する 2 つの簡単な解決策です。

オプション 1 - ポストバック

  1. 送信がクリックされたとき、フォームをインデックスページ自体に送信します。フォームアクションを空白のままにするか、使用します$_SERVER['PHP_SELF']
  2. 何かを表示する前にindex.phpでリクエストタイプとパラメータを確認し、データを保存します
  3. 成功/失敗メッセージの生成と表示

オプション 2 - Ajax

  1. 新しいページを作成insertStudent.php
  2. フォームの送信に ajax 機能を追加し、フォームを に送信しinsertStudent.phpます。jquery submitまたはプロジェクトの車輪の再発明を参照してください
  3. 生徒を保存し、insertStudent.phpjson ステータスを返すか (1/0)
  4. ajax ハンドラーで応答を処理し (ステップ 2)、成功/失敗メッセージを表示します。

これは宿題に役立ちます ;-)

于 2012-12-07T20:14:35.273 に答える