显示所选项目后的数据

时间:2012-12-20 08:26:00

标签: php mysql select menu

首先,我要感谢大家对我上一个问题的积极回应。

现在我得到了另一个我需要帮助的问题。

我有一个包含项目列表的下拉菜单。列表在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的数字。现在在另一个名为contract的表中,我已经存储了具有相同值Key的所有契约。所以...在第二个下拉菜单中,我必须根据他们在第一个下拉菜单中选择的项目显示合同。

我真的希望明白这一点,我有点困惑。

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

的index.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下拉菜单中看到任何内容。

3 个答案:

答案 0 :(得分: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>

jQUERY CODE

$("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应该替换为应该放置返回选项的select的id。

答案 1 :(得分:1)

php是服务器端你不能用php做你需要的ajax(如果你想这样没有刷新页面)

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


注意

  1. 整个 ext/mysql PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDOMySQLi
  2. 好读

    1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead

答案 2 :(得分: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进行一些研究,并了解如何动态编辑页面