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 选择的内容决定。所以,我想要类似的东西:

$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 以在第二个下拉列表中提供结果。这可以做到吗?

4

1 回答 1

2

您不能“仅”使用 Ajax 执行此操作,但您应该使用 Ajax 执行此操作。

PHP方式(不建议,未经测试)。基本上使用isset,如果是,更多的将添加到表单中。来自选择的 POST 是选择名称。因此,更改我在下面的示例中所做的普通选择标签。这也要求他们提交。

$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 方式(两个单独的文件,未经测试,但给你的想法)

//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 回答