2016-04-18 35 views
0

私は2つのテーブル:Course_tableとMajor_tableを持っていて、どちらも関係エンティティを持っています。私はドロップダウンリストを作成し、それをMajor_tableにリンクし、HTMLテーブルをCourse_tableにリンクしました。私がしたいのは、ドロップダウンリストからの選択に基づいてCourse_tableにデータを表示することですが、何かを選択して 'Filter'を押すと、空のテーブルが表示されます。ここでphpテーブルmysqlドロップダウン選択からデータを表示

は私の最初のコードです:

<form method="post" action="staff-page.php"> 
          <label for="majorFilter">Select Major: <select id="majorFilter" name="majorFilter"> 
          <option value="0">Select a major</option> 
          <?php 
           include ('partials/connectDb.php'); 

           $sql = "SELECT * FROM major_table;"; 
           $run_query = mysqli_query($conn, $sql); 

           while ($row = mysqli_fetch_array($run_query)) { 
            $m_id = $row['major_id']; 
            $m_name = $row['major_name']; 

            echo "<option value='{$m_id}'>{$m_name}</option>"; 
           } 
          ?> 
          </select></label> 
          <Button type="button" name="filter" id="filter">Filter</Button> 
         </form> 

そして、これは私の第二のコードです:あなたの助けがはるかに高く評価されて

<table style="height: 400px; width: 600px; overflow: auto; display: none;" id="courseTable"> 
          <caption>Course Table</caption> 
          <thead> 
           <tr> 
            <th>Name</th> 
            <th>Code</th> 
            <th style="padding-right: 10px;">Cr</th> 
            <th>Major</th> 
            <th>Students Enrolled</th> 
           </tr> 
          </thead> 

          <?php 
           error_reporting(0); 
           $conn = mysqli_connect('localhost', 'root', '', 'srs-db') or die('ERROR: Cannot Connect='.mysql_error($conn)); 


           $query = "SELECT course_table.course_name, course_table.course_code, course_table.cr, major_table.major_name, course_table.students_enrolled FROM course_table 
           INNER JOIN major_table ON course_table.major = major_table.major_id 
           WHERE course_table.major = '$m_id';"; 

           $sql = mysqli_query($conn, $query); 

           while ($course = mysqli_fetch_array($sql)) { 
            # code... 
            echo "<tr>"; 
            echo "<td>.$course[course_name].</td>"; 
            echo "<td>.$course[course_code].</td>"; 
            echo "<td>.$course[cr].</td>"; 
            echo "<td>.$course[major_name].</td>"; 
            echo "<td>.$course[students_enrolled].</td>"; 
            echo "</tr>"; 
           } 
          ?> 

         </table> 

:)

+0

[フィルタ]ボタンを押したときにサーバーにリクエストがありますか? –

+0

あなたのイベントはどこですか?それは2番目のコードを呼び出す – dev

+0

@ TudorConstantinいいえ、ページが私が推測するようにリロードしない理由です。だから私はボタンタイプ= 'ボタン'を使用しています – user3586095

答えて

0

2番目のコードでは、以下を行う必要があり<tr>をIDベースにして、それらのすべてにクラスを適用します。

 while ($course = mysqli_fetch_array($sql)) { 
       # code... 
       echo "<tr class='all_trs' id='display_".$m_id."' style='display:none;'>"; 
       echo "<td>.$course[course_name].</td>"; 
       echo "<td>.$course[course_code].</td>"; 
       echo "<td>.$course[cr].</td>"; 
       echo "<td>.$course[major_name].</td>"; 
       echo "<td>.$course[students_enrolled].</td>"; 
       echo "</tr>"; 
     } 

そしてあなたはDocument readyでjQueryのOnchange methodを配置する必要があります:このよう

<script type="text/javascript"> 
    $(function() { 
     // will be triggered on Change of your Select box 
     $("#majorFilter").change(function() { 

      alert("Select Box changed"); 
      // Hiding all Trs by default. 
      $(".all_trs").hide(); 
      // Showing just the specific TR which is selected in select box 
      $("#display_" + $(this).val()).show(); 

     }); 
    }); 
</script> 

あなたは、私はので、それは、<tr> HTMLをエコー用display:noneを使用していることに気づくかもしれません私はデフォルトですべてのTRを隠していて、選択ボックスの変更で選択したものだけを表示します。

+0

残念ながら、それでもテーブルは空です。 – user3586095

+0

何か不足している可能性があります。現在のフルコードで質問を投稿または更新できますか? – hmd

関連する問題