0

オプション( math101 、 eng102 ..など)を含む「コース」というドロップダウンリストがあり、(学生名)という別のドロップダウンリストを配置したいのですが、これは非表示にする必要があるため、ユーザーがコースから1つの値を選択するとlist 、学生名のリストが表示され、このコースのみを受講した学生の名前が表示されるため、ユーザーは1つを選択できます..もちろん、すべてのデータはデータベースから取得されます

これまでの私のコードは

<?php

   include('../connect.php');
   $id=$_SESSION['login_user'];



      $sql = "SELECT CourseName from Course ";
         $result = mysql_query ($sql, $connection);

         echo "<tr><th>Course Name </th>";
         echo "<td><select id='CourseName' name='v1' >";
        while( $row = mysql_fetch_array($result))
   {
        echo "<option value='$row[CourseName]' selected='selected'>$row[CourseName]</option> ";

   }
     echo "</select>";
     echo "</td>";
     echo "</tr>" ;


  $sql = "SELECT StudentName from Student ";
         $result = mysql_query ($sql, $connection);

         echo "<tr><th>Student Name </th>";
         echo "<td><select id='StudentName' name='v2' >";
        while( $row = mysql_fetch_array($result))
   {
        echo "<option value='$row[StudentName]' selected='selected'>$row[StudentName]</option> ";

   }
     echo "</select>";
     echo "</td>";
     echo "</tr>" ;




     echo "</table>" ;
     echo "</font>" ;

    ?>

私の2つのテーブルは

コース: CourseName var(30) CourseID int(7)

学生: StudentName var(40) 学生 ID int(7) CourseID int(7)

私の質問は、「学生名」を非表示のドロップダウンリストにする方法は「コース」リストに依存するため、ユーザーが1つのコースを選択すると、このコースを受講したすべての学生の名前が表示されます(コースIDによる)?

4

2 に答える 2

0

これを行う方法は、javascript / jQuery/Ajaxを使用することです。これらの例をコピーして貼り付けただけなので、これはテストされていないことに注意してください。

元のファイルで次の変更を行います-

$sql = "SELECT CourseName from Course ";
$result = mysql_query ($sql, $connection);

  echo "<tr><th>Course Name </th>";
  echo "<td><select id='CourseName' name='v1' onchange='students()' >"; // Added on Change
  echo "<option value='' selected='selected'>Select</option> ";
  while( $row = mysql_fetch_array($result))
  {
  echo "<option value='$row[CourseID]'>$row[CourseName]</option> ";  // make the value = to CourseID
  }
 echo "</select>";
 echo "</td>";
 echo "</tr>" ;

 // removed sql query to get students, 

 echo "<tr><th>Student Name </th>";
 echo "<td><select id='StudentName' name='v2' >";  //builds a blank student select
 echo "</select>";
 echo "</td>";
 echo "</tr>" ;

 echo "</table>" ;

ファイルの先頭に、次のjavascript / jQuery/Ajaxを追加します

<head>
...
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> //can be changed to other version ie. 1.7.../1.8.. etc
<script type="text/javascript">
function students(){   
$("#StudentName option").remove();  // empties out the StudentName select so we can rebuild
var course = $('#CourseName').val();  //this gets the value of the selected Course
if(course != ""){ // we will only get students if a Course is selected
  jQuery.ajax({
  type: "POST",
  url: "students.php",
  data: 'course='+course,
  cache: false,
  success: function(response){
  var student_array = JSON.parse(response);
  $.each(student_array, function() {
  $("<option />").attr("value", student_array).text(student_array).appendTo("#StudentName");  // adds new StudentName select options
  });
  }
});
}
</script>
...
</head>

そして、別のファイルを作成しますstudents.php-(またはurl一致するようにAjaxで名前を変更します)

<?php
include('../connect.php');
$course = mysql_real_escape_string($_POST['course']); // gets course that was sent via Ajax
$sql  = "SELECT StudentName from Student";
$sql .= " WHERE CourseID = '$course'";  // get only students with selected CourseID
$result = mysql_query ($sql, $connection);
 while( $row = mysql_fetch_array($result))
 {
    $student_array[] = $row[StudentName];
 }
 $student_array = json_encode($student_array);  // encodes it to send back
 print_r($student_array);   // prints the array to use
 ?>

関数を使用して新しいコードを記述してはならないことに注意してくださいmysql_*。代わりに、MySQLiまたはPDO_MySQL拡張子を使用する必要があります。MySQL:APIガイドの選択を参照してください

于 2012-11-12T03:59:19.937 に答える
0

私が提供したAjax/jQueryの回答を使用したくない場合は、別の方法があります。StudentNameコースを選択すると、に基づいて選択されたページがリロードされますCourseID。これは、select に 1 つの JavaScript コードを追加してから、select の周囲に追加するonchange='this.form.submit();'ことによって実現されます。CourseIDisset($_POST['v1'])StudentName

<?php

include('../connect.php');
$id=$_SESSION['login_user'];

$sql = "SELECT CourseName from Course ";
$result = mysql_query ($sql, $connection);

  echo "<form action='' method='post'>";
  echo "<table>";
  echo "<tr><th>Course Name </th>";
  echo "<td><select id='CourseName' name='v1' onchange='this.form.submit();'>";  // add onchange function to submit
    echo "<option value=''>Select Course</option> ";  // empty value option
    while( $row = mysql_fetch_array($result)){
    $sel = ($_POST['v1'] == $row[CourseName])? "selected='selected'":"";   // adds selected='selected' if post course same as this course
    echo "<option value='$row[CourseName]'$sel>$row[CourseName]</option> ";
    }
 echo "</select>";
 echo "</td>";
 echo "</tr>";

if ((isset($_POST['v1'])) && ($_POST['v1'] != "")){ // checks if a course is selected
 $sql = "SELECT StudentName from Student WHERE CourseID = ".mysql_real_escape_string($_POST['v1']);  // only selects StudentName which has CourseID
     $result = mysql_query ($sql, $connection);

     echo "<tr><th>Student Name </th>";
     echo "<td><select id='StudentName' name='v2' >";
    while( $row = mysql_fetch_array($result)){
      echo "<option value='$row[StudentName]' selected='selected'>$row[StudentName]</option> ";}
}
 echo "</select>";
 echo "</td>";
 echo "</tr>" ;

 echo "</table>" ;
 echo "</form>" ;

?>
于 2012-11-13T06:43:56.793 に答える