首先,我要感谢大家对我上一个问题的积极回应。
现在我得到了另一个我需要帮助的问题。
我有一个包含项目列表的下拉菜单。列表在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下拉菜单中看到任何内容。
答案 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调用并显示另一个
注意
ext/mysql
PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDO
或MySQLi
好读
答案 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进行一些研究,并了解如何动态编辑页面