【问题标题】:2nd Drop Down selection to be related to the selection on the 1st Drop Down Selection第二个下拉选择与第一个下拉选择中的选择相关
【发布时间】:2014-01-30 17:47:58
【问题描述】:

我想创建一个注册表单,它的值将存储在数据库 (mysql) 中。 因为我希望数据采用正确的格式(询问城市时是纽约而不是纽约),所以我正在考虑使用下拉列表限制选项。例如,当用户选择 Country: UK 时,第二个选择将缩小到英国境内的城市并删除世界其他城市。

我可以只用 PHP/HTML/MYSQL 知识做到这一点吗?还是我需要了解 Javascript/Jquery 等等?

提前致谢。

【问题讨论】:

  • 你需要 Javascript/jQuery
  • 你需要使用 javascript/jquery 进行 ajax 调用
  • 不,你不需要 Javascript/jQuery。可以用普通的 PHP 来完成。

标签: javascript php jquery html mysql


【解决方案1】:

你可以只用 PHP/HTML/MYSQL 来做,但是,它会影响用户体验,因为你必须做这样的事情:

1) 带有国家下拉菜单的表单。获取用户提交并发送回服务器(通过 POST、PUT、GET)

2) 接收用户输入,然后在第二个下拉菜单中显示过滤后的城市。现在用户可以选择城市并发布到您的服务器。

【讨论】:

  • 所以我想我必须学习 JavaScript/ajax/jquery 才能正确构建它并且对用户友好。有什么适合学习的书推荐吗?
  • 如果您想根据用户选择的国家/地区动态加载城市,然后只向您的服务器提交一次用户响应,那么可以。
【解决方案2】:

你可以用 PHP 来做,但不是动态的。人们必须先选择英国,然后按提交,然后继续选择一个城市。

但是,您可以动态进行。您可以使用 Ajax 正确执行此操作:

HTML:

<select name="country" id="country" onchange="getCities(this.value)">
 <option>Brazil</option>
 <option>United Kingdom</option>
</select>

<select name="city" id="city">
 <option disabled selected>Please select a country first</option
</select>

Javascript:

function getCities(str) {
 if (str=="") {
  document.getElementById("city").innerHTML="";
  return;
 } if(window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
 } else {   // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 } xmlhttp.onreadystatechange=function() {
 if(xmlhttp.readyState==4 && xmlhttp.status==200) {
  document.getElementById("hat").innerHTML=xmlhttp.responseText;
 }
}
 xmlhttp.open("GET","getcities.php?q="+str,true);
 xmlhttp.send();
}

getcities.php 中,您将获得所有相关城市,并将它们输出为&lt;option&gt;city_name&lt;/option

【讨论】:

    【解决方案3】:

    你可以通过 jquery ajax 轻松做到。

    首先为这样的国家/地区填充下拉列表:

    $sql = "select * from country";
    $result = //execute your query and fetch array
    

    通过$result 和内部循环运行一个循环

    echo "<option value=".$row['id'].">".$row['name']."</option>";
    

    之后你需要像这样调用 ajax 来改变这个下拉列表:

    $("#your_dropdown_id").change(function(){
         $.ajax({
            url: "ajax.php?id="+$(this).val(),
            success: function(data) {
                $("#second_dropdown_id").html(data);
            }
        })
    })
    

    我试图给你基本的想法。

    查看详情:http://www.appelsiini.net/2010/jquery-chained-selects

    How to make cascading drop-down lists using mysql and php

    【讨论】:

      【解决方案4】:

      最好的方法是使用 jQuery (javascript) 来管理与服务器的交互(这个过程称为 AJAX)。

      首先,jQuery 只是一个 javascript 库,它使使用 javascript 变得更容易。 Here 是一篇关于为什么 jQuery 绝对必要的有趣文章。然而,使用 jQuery 的两个主要原因是:(1) 为您完成了跨浏览器,以及 (2) waaaaaay 少打字。以下是学习 jQuery 的一些很棒的免费资源:

      theNewBoston.com
      phpAcademy.org

      接下来,在使用 jQuery 时,必须先加载 jQuery 库。之后,您可以键入 jQuery 命令而不是 javascript,并且更容易发生许多魔术。像这样在你的 head 标签中加载库:

      <head>
          <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
      </head>
      

      最后,在此处查找基于 Select #1 的结果填充 Select #2:

      Populate Select2 based on Select1, from MySQL DB

      Populate dropdown 2 based on selection in dropdown 1

      【讨论】:

        猜你喜欢
        • 2018-09-29
        • 1970-01-01
        • 2017-12-17
        • 2016-08-03
        • 1970-01-01
        • 2015-12-01
        • 1970-01-01
        • 2012-01-04
        • 2023-04-02
        相关资源
        最近更新 更多