php - 根据表单输入从 SQL 数据库中提取数据

标签 php javascript sql

我正在开发一种表单,其中更改一个“select”元素会修改另一个“select”元素的值。这两个元素的值均来自 MSSQL 数据库。实现可以实现此目的的代码的最佳方法是什么?

我可以想到两种方法来做到这一点。

  1. 将表格存储到 JavaScript 变量中,并使第一个元素的 onchange 事件修改第二个元素。

  2. 向页面发送 GET 请求并重新加载它,使用 PHP 修改第二个元素。

我不喜欢第一种方法,因为将数据库从 PHP 端存储到 javascript 端似乎有点 hacky 并且确实很麻烦。我也不喜欢第二种方式,因为重新加载页面会破坏用户体验并让他不得不再次向下滚动。

最佳答案

您应该使用AJAX来提取数据并填充第二个选择元素。简而言之,AJAX 只是在幕后发生的单独页面请求。您可以使用它加载简单的 HTML 页面或部分页面并将其显示在 DOM 元素中,也可以使用它动态检索结构化数据。

最好的方法是使用 JSON(JavaScript 对象表示法)。在这种情况下,您将使用 Javascript 对 PHP 页面进行 AJAX 调用,并且该 PHP 页面将在查询字符串中采用表示第一个 select 元素的值的参数。这样,您可以调用 MSSQL 数据库来获取第二个选择的所有相应选项,然后回显这些选项。反过来,您用来发出 AJAX 请求的 Javascript 可以解析响应并将其解释为 JavaScript 对象文字,从而允许您循环遍历结果并对它们执行您想要的操作。

这是一个示例(我使用 jQuery,因为它使 AJAX 变得非常简单)。

在表单页面顶部:

$(document).ready(function() {
    $('#select1').change(function() {
        var select1val = $(this).val();
        $.getJSON('/path/to/response.php', 'select1=' + select1val, function(response) {
             $('#select2').empty();
             if(response) {

                for(var option in response) {
                    $('<option/>').val(option.value).html(option.label).appendTo($('#select2'));
                }
             }
        });
     });
});

然后你的response.php页面应该是这样的:

<?php
$select1 = $_GET['select1'];
// Do validation here, to make sure it's a legitimate value for select1. Never trust the
// user input directly.

// Replace this with whatever code you use to make DB queries.
$options = $mydb->query("SELECT value,label FROM select2_options WHERE select1_value=?", $select1);

echo json_encode($options);

关于php - 根据表单输入从 SQL 数据库中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224329/

相关文章:

php - 检查字符串是否只包含php中的数字

php - 如何仅获取特定日期范围内的 Google 日历事件

javascript - 点赞按钮 - 在两个功能之间切换

sql - 如何使用 SQL 将一列数据添加到结果表中(基于同一表中的逻辑引用)?

php - 在函数内调用 ADODB?

php - Xpath解析xml并输入mysql

Javascript:解析时深层对象中的访问函数

javascript - 在 NodeJS 中构造辅助函数的最佳方法

php - 查询不会使用使用直接 SQL 的 php 返回结果

php - 如何在 yii2 queryParams 中设置 OR 条件?