如何在下一个查询中将select选项值用作PHP变量?

时间:2013-09-18 14:42:40

标签: php mysql

我有以下代码,它提供了该特定表中所有行的下拉列表,这很好用。代码如下:

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

1 个答案:

答案 0 :(得分:2)

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

PHP方式(不建议,未经测试)。基本上使用isset,如果是,则会在表单中添加更多内容。 select中的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