Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用php中的下拉菜单对数据进行排序和检索_Javascript_Php_Mysql - Fatal编程技术网

Javascript 使用php中的下拉菜单对数据进行排序和检索

Javascript 使用php中的下拉菜单对数据进行排序和检索,javascript,php,mysql,Javascript,Php,Mysql,我的网页上有两个下拉菜单。一个是课程列表,另一个是学生列表。我想做的是,当在课程菜单中进行选择时,它将更新学生菜单,以仅列出该课程中的学生 所有课程和学生数据都保存在MySQL数据库中。检索我想要的结果的SQL语句不是问题。我已经弄明白了。问题是,我不知道如何让一个下拉菜单在不使用提交按钮的情况下更新另一个下拉菜单。有没有办法让课程菜单在更改时调用php函数,从而更新学生菜单 我已经研究了几个类似的问题,但是很多问题都是在第二个菜单更新时重置了第一个菜单。我需要在最后的页面上打印所选的课程和学生

我的网页上有两个下拉菜单。一个是课程列表,另一个是学生列表。我想做的是,当在课程菜单中进行选择时,它将更新学生菜单,以仅列出该课程中的学生

所有课程和学生数据都保存在MySQL数据库中。检索我想要的结果的SQL语句不是问题。我已经弄明白了。问题是,我不知道如何让一个下拉菜单在不使用提交按钮的情况下更新另一个下拉菜单。有没有办法让课程菜单在更改时调用php函数,从而更新学生菜单

我已经研究了几个类似的问题,但是很多问题都是在第二个菜单更新时重置了第一个菜单。我需要在最后的页面上打印所选的课程和学生

这是可以用PHP实现的,还是Javascript更可取?如果有人能为他们指出正确的方向,那将是非常感激的

有没有办法让课程菜单在更改时调用php函数,从而更新学生菜单

对。这方面的流行语是AJAX

您最终将使用JavaScript和PHP来完成这项工作。实际实现非常复杂,因此我将为您列出基本步骤

  • (JavaScript)为课程下拉菜单绑定
    change
    事件
  • (JavaScript)当触发该事件时,捕获所选课程并将XMLHttpRequest与所选课程一起发送到服务器
  • (PHP)捕获所选课程,并运行SQL语句来获取学生
  • (PHP)将学生列表转换为文本格式(JSON、XML、分隔文本等)以发送回浏览器(使用
    echo
    print
    等)
  • (JavaScript)填充学生下拉菜单

  • 一般的方法是在下拉选择器中添加一个钩子,并在页面的另一个部分上触发AJAX加载,将检索到的数据填充为HTML片段(easy)或JSON数据(harder)

    一个真正快速而肮脏的版本是抓取页面的一部分,并使用
    $重新填充当前文档。load()


    这是一个粗略的想法:当您的第一个选择框更改时,加载
    select.php
    页面或您正在使用的任何页面,并添加参数
    select=N
    ,其中
    N
    是所选值。然后它撕掉
    #select2
    部分并替换它。

    一种方法是使用AJAX。请看@Jian,请不要链接到w3schools。它是危险的,并且促进了糟糕的编程实践。这里的许多常见问题都是网站提出的各种错误建议的直接结果。@tadman每个人都这么说,但我还没有看到“危险的糟糕编程实践”,甚至“不准确的信息”的例子。这只是一个例子,它为他的问题提供了一个可能的解决方案。我本可以只说使用AJAX,但你在这一点上确实是对的。@cypher这个例子非常糟糕:它促进了使用
    intval
    来转义SQL值的想法,鉴于这个例子使用了
    mysqli
    ,这是完全错误的。它应该使用占位符和
    bind_参数
    。光是这一点就足以引起人们的注意。使用字符串连接或插值组合查询非常容易出错,如果有人从那里将应用程序完全打开,一个小小的错误就可能彻底毁掉它。jQuery确实让客户端的操作变得非常简单。谢谢。我花了一点时间研究我的特殊情况,但这帮了我的工作。谢谢!
    $('#select1').on('change', function() {
      $('#select2').load('select.php #select2', 'select1=' + $(this).val())
    })