0

首先,我要感谢大家对我之前的问题做出如此积极的回应。

现在我有另一个问题需要帮助。

我有一个带有项目列表的下拉菜单。该列表在 while 循环内生成。这是代码:

$query = "SELECT Key, Short FROM product WHERE Active = 1 OR Short LIKE 'Blue%'";
$run = mysql_query($query) or die(mysql_error());

echo 'Product: <br />';
?>

<select id="select2" name="select2">
<?php
$ids = 0;
echo "<option selected='selected'>-Select product-</option>";
while($rows = mysql_fetch_assoc($run)) {
    echo "<option value=$ids>".$rows['Short']."</option>";
    $ids++;
}
?>
</select><br /><br />

现在我需要做的是在这个下拉菜单下面创建另一个下拉菜单,并根据他们从下拉菜单中选择的选项显示合同。他们选择的每个项目也有一个名为 Key 的数字。现在在另一个名为contracts 的表中,我存储了所有具有相同值Key 的合约。所以......在第二个下拉菜单中,我必须根据他们在第一个下拉菜单中选择的键来显示合同。

我真的希望它足够清楚明白,我有点困惑。

更新:好的,这是新代码:

索引.php

$("select#select2").change(function(){
    $.ajax({
        type: "GET",
        url: "process.php",
        data: "selected_key=" + $(this).val(),
        success: function(result) {
            $("select#text2").html(result);
        }
    });
});

</script>

<select id="text2" name="text2">

</select>

这是我的 process.php

<?php ## URL_TO_GET_CONTRACTS_FOR_KEY ##
$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM contacts WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);
while($row = mysql_fetch_assoc($run)) {
    echo "<option value='..'>..</option>";
    } ?>

但我看不到我的 text2 下拉菜单中显示的任何内容。

4

3 回答 3

2

认为您最好在第一个下拉菜单中使用选项值 $rows['Key'] 并添加一个 jQuery 选择器,该选择器采用所选值并获取该键的相应合同。

应该是这样的。。

PHP代码

$query = "SELECT Key, Short FROM product WHERE Active = 1 OR Short LIKE 'Blue%'";
$run = mysql_query($query) or die(mysql_error());
echo 'Product: <br />'; ?>
<select id="select2" name="select2">
<?php
echo "<option selected='selected'>-Select product-</option>";
while($rows = mysql_fetch_assoc($run)) {
    echo "<option value='".$rows['Key']."'>".$rows['Short']."</option>";
}
?>
</select>

查询代码

$("select#select2").change(function(){
    $.ajax({
        type: "GET",
        url: "URL_TO_GET_CONTRACTS_FOR_KEY",
        data: "selected_key=" + $(this).val(),
        success: function(result) {
            $("select#NEWSELECT").html(result);
        }
    });
});

说明: URL_TO_GET_CONTRACTS_FOR_KEY 是您必须编写的 PHP 文件的 URL。在该文件中,您可以访问 $_GET['selected_key'],使用该值来获取该密钥的合同。在该文件中,您应该为第二个选择回显“”标签。像这样:

<?php ## URL_TO_GET_CONTRACTS_FOR_KEY ##
$selectedKey = $_GET['selected_key'];
$query = ..
$run = ..
while($row = mysql_fetch_assoc($run)) {
    echo "<option value='..'>..</option>";
} ?>

NEWSELECT 应替换为应放置返回选项的选择的 id。

于 2012-12-20T08:36:56.450 回答
1

php 是服务器端,你不能只用 php 来做到这一点,因为你需要 ajax(如果你想这样做而不刷新页面)

只需在选择下拉菜单上进行 ajax 调用并显示另一个


笔记

  1. 整个ext/mysqlPHP 扩展提供了所有以 mysql_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO或者MySQLi

好读

  1. 不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
于 2012-12-20T08:33:17.913 回答
0

有很多方法可以做到这一点,但与 AJAX 相比,它们会很麻烦而且很烦人。(我的意思是首先获取所有必需的数据,但这是一个坏主意)。

为什么选择 AJAX

AJAX 可以在不重新加载整个页面的情况下从其他页面发送和接收数据。您在上面编写的 PHP 将只向浏览器输出 HTML。因此,要运行更多 PHP,您需要在文件中存储额外的代码并运行它。

如何使用它

一个简单的方法是使用 jQuery。这将在客户端与您的 jQuery 一起使用

$("select#select2").change(function(){
$.ajax({
    type: "POST",
    url: "url_to_contacts",
    data: "reqd_key=" + $(this).val(),
    success: function(result) {
        $("select#select3").html(result);
      }
   });
});

将有上面提到的单独的 PHP 文件。$_POST可以使用这将包含查询并输出 HTML来获取变量。此输出 HTML 将作为新选择的 HTML 按行放置$("select#select3").html(result);

建议在尝试此之前对 AJAX 进行一些研究并了解如何动态编辑页面

于 2012-12-20T08:42:55.133 回答