2

その特定のテーブルのすべての行のドロップダウン リストを提供する次のコードがありますが、これは正常に機能します。コードは以下のとおりです。

<?php
$con=mysqli_connect("localhost","user","pass","db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT ID, NAME FROM b_sonet_group ORDER BY ID DESC");

echo "<select>";
echo "<option value=''>Select Your Project</option>";

while($row = mysqli_fetch_array($result))

  {
  echo "<option value='" . $row['ID'] . "'>" . $row['NAME'] . "</option>";
  }
  echo "</select>";


mysqli_close($con);
?>

IDに基づいて、上記のリストで選択されたものによって決定される2番目のドロップダウンリストが必要になりました。だから、私は次のようなものが欲しい:

$result2 = mysqli_query($con,"SELECT ID, ALBUM_NAME FROM a_different_table WHERE ID=ID_FROM_QUERY_ABOVE");

echo "<select>";
echo "<option value=''>Select Your Album</option>";

while($row = mysqli_fetch_array($result))

  {
  echo "<option value='" . $row['ID'] . "'>" . $row['ALBUM_NAME'] . "</option>";
  }
  echo "</select>";


mysqli_close($con);
?>

基本的に、最初のドロップダウンから ID を取得して、2 番目のドロップダウンに結果を提供したいと考えています。これはできますか?

4

1 に答える 1

2

これを Ajax だけで行うことはできませんが、Ajax で行う必要があります。

PHP の方法 (推奨されておらず、テストもされていません)。基本的に isset を使用し、そうである場合はさらにフォームに追加されます。選択からの POST は選択名です。したがって、以下の例で行ったプレーンな select タグを変更します。これには、提出も必要です。

$result = mysqli_query($con,"SELECT ID, NAME FROM b_sonet_group ORDER BY ID DESC");

echo '<form id="project_form" method="post">';
    echo "<select id='select_your_project' name = 'select_your_project'>";
    echo "<option value=''>Select Your Project</option>";

    while($row = mysqli_fetch_array($result))

      {
      echo "<option value='" . $row['ID'] . "'>" . $row['NAME'] . "</option>";
      }
      echo "</select>";

    if(isset($_POST['select_your_project'])){
        $result2 = mysqli_query($con,"SELECT ID, ALBUM_NAME FROM a_different_table WHERE ID='".$_POST['select_your_project']."'");
        echo "<select id='select_your_album' name = 'select_your_album'>";
        echo "<option value=''>Select Your Album</option>";

        while($row = mysqli_fetch_array($result2))

          {
          echo "<option value='" . $row['ID'] . "'>" . $row['ALBUM_NAME'] . "</option>";
          }
          echo "</select>";
    }
    echo '<input type="submit" value="Submit">';
echo '</form>';

if(isset($_POST['select_your_album'])){
    //do form submitted stuff here
}

Ajax の方法 (2 つの別個のファイル、テストされていませんが、アイデアが得られます)

//Main page (view) START
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    //this will trigger automatically when they change the first select box
    $('#select_your_project').on('change', function(event){
        if($(this).val() == 'select_your_project'){
            $("#ajax_reply_div").empty()
        }else{
            var values = $(this).serialize();
            $.ajax({
                url: "php_data_file.php",
                type: "post",
                data: values,
                success: function(data){
                    $("#ajax_reply_div").empty().append(data);
                },
                error:function(){
                    $("#ajax_reply_div").empty().append('something went wrong');
                }
            });
        }
    });
</script>

<form id="id_of_form">
    <?php
    echo "<select id='select_your_project' name='select_your_project'>";
    echo "<option value='select_your_project'>Select Your Project</option>";

    while($row = mysqli_fetch_array($result))

      {
      echo "<option value='" . $row['ID'] . "'>" . $row['NAME'] . "</option>";
      }
      echo "</select>";
    ?>
    </select>
    <div id="ajax_reply_div">
    </div>
    <input type="submit" value="Submit">
</form>

//Main page (view) END

//php_data_file.php START

if(isset($_POST['select_your_project'])){
    $result2 = mysqli_query($con,"SELECT ID, ALBUM_NAME FROM a_different_table WHERE ID='".$_POST['select_your_project']."'");
    //as a note it is better to only send an array back then build the HTML with jQuery, but this way is easier if you are new to jQuery/Ajax
    echo "<select id='select_your_album' name = 'select_your_album'>";
    echo "<option value=''>Select Your Album</option>";

    while($row = mysqli_fetch_array($result2)){
      echo "<option value='" . $row['ID'] . "'>" . $row['ALBUM_NAME'] . "</option>";
    }
    echo "</select>";
}

//php_data_file.php END
于 2013-09-23T19:38:18.300 に答える