从数据库中获取表单中的选择选项

时间:2016-07-03 16:48:53

标签: php html mysql

我使用PHP对服务器端进行编程并卡住了。

我想使用表单的select标签创建一组输入字段。 select的选项应该从我的数据库中获取,第一个输入中选择的选项将决定第二个输入中的选项。

例如,这两个字段是国家/地区和州。首先,用户选择他们的国家名称,该名称将决定状态输入字段中出现的状态列表。我希望当用户更改国家/地区时,列表会动态更改。

2 个答案:

答案 0 :(得分:0)

您可以在 PHP 中每次都提交一个选择。

例如:

 <form action="selectState.php" method="post">
  <select name="country">
   <option value="countryName">countryName</option>
   ...
  </select>
 </form>

然后你在selectState.php中获得 $ _ POST ['country'] 的值并按你想要的方式打印选择:

 <form action="" method="post">
  <select name="state">
   <?php
     // select use $_POST['country'] to customize the select option's
   ?>
  </select>
 </form>

更加用户友好的解决方案(不需要新页面或刷新)使用 AJAX

所以你可以使用这种形式:

<form action="selectState.php" method="post">
  <select name="country" onchange="ajaxFunction(this.value)">
   <option value="countryName">countryName</option>
   ...
  </select>
  <select name="state" id="stateList">
   <!-- here we'll put the states we want -->
  </select>
 </form>

每次用户更改选择值时都会调用ajaxFunction()并将函数传递给函数。

这是ajaxFunction(注意:这个例子使用jQuery,但你可以在vanilla javascript中完成):

function ajaxFunction(val){
  $.ajax({
    type: 'post', // choose the method
    url: 'page.php', // choose the 'action' page
    data: {
      country:val // send the data
    },
    success: function (response) {
      // this tell the browser what to do with the response of 'page.php'
      // in this case we are telling to put everything we get to the HTML element with stateList id 
      document.getElementById("stateList").innerHTML=response;
    }
  });
}

最后你需要它的'page.php'来简单地查询数据库(注意:这是伪代码):

<?php

 // Query the DB for the states with country = $_POST['country']
 while(results){
  echo '<option value="results[$i]">results[$i]</option>';
 }

?>

答案 1 :(得分:-1)

您使用的是诸如Laravel(推荐)或Codeigniter之类的php框架(不确定它是否仍在开发中)。

如果是这样,你可以构建一个国家的2d php数组,每个国家都有一个状态的子数组。

这可以直接放到渲染页面(视图)中。 使用像

这样的东西
 var countries_list =<?php echo json_encode($countries_array); ?>;

将直接将此注入到javascript数组中,您可以使用该数组在国家/地区选择更改时填充状态选择。

或者使用ajax但速度会慢一点,并且会更多地点击服务器。