gpt4 book ai didi

php - 如何通过从另一个下拉列表中选择值来填充下拉列表?

转载 作者:行者123 更新时间:2023-11-29 00:31:11 26 4
gpt4 key购买 nike

我一直在尝试使用 php、html 和 mysql 数据库在一个下拉列表中选择一个项目来填充一个下拉列表的内容,事实证明这比我想象的要难得多。我试图让一个下拉列表根据第一个下拉列表中的公司选择显示所有手机的名称。

我在下面提供的代码没有错误,但是第二个下拉列表没有被填充。变量“$submittedValue”没有得到正确的值,因此“$name”也没有内容。我似乎无法找出原因。

我所做的是,尝试使用第一个下拉列表中的选定选项,将其放入变量并将其作为参数传递给第二个查询。

我将不胜感激。

<?php

$con=mysqli_connect("localhost","root","","dbmobiles");

// Check connection
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$options = '';
$submittedValue = '';
$name=" ";

$q1=mysqli_query($con,"select distinct compName from umobile order by compName ASC");
while($row = mysqli_fetch_array($q1)) {
$options .="<option value=". $row['compName'] ." >" . $row['compName'] . "</option>";
}

$menu1 = "<form id='filter' name='filter' method='post' action=' '>
<p><label>Select Company</label></p>
<select name='filter' id='filter'>
" . $options . "
</select>
</form>";

if (isset($_POST["filter"])) {
$submittedValue = $_POST["filter"];
}
echo $menu1;

if ($q2=mysqli_prepare($con,"SELECT DISTINCT mobname FROM umobile WHERE compName=? "))
{
mysqli_stmt_bind_param($q2,"s",$submittedValue);
$s=$submittedValue;
mysqli_stmt_execute($q2);
mysqli_stmt_bind_result($q2,$r);
}

while(mysqli_stmt_fetch($q2)) {
$name .="<option>".$r['mobname']."</option>";
}

echo ".$name.";
$menu2 = "<form id='moblist' name='moblist' method='post' action=' '>
<p><label>Select Mobile</label></p>
<select name='moblist' id='moblist'>
" . $name . "
</select>
</form>";

echo $menu2;
?>

最佳答案

不要忘记引用 .$r['mobname'].

$name .="<option value=\"".$r['mobname']."\" >".$r['mobname']."</option>";

您的 $_POST 仅测试。

if (isset($_POST["filter"])) {
$submittedValue = $_POST["filter"];
}

如果 $_POST["filter"] 未设置怎么办?
您的代码没有处理这个事实。他总是跑遍 $menu2 部分。

顾名思义,您的 $_POST 是一个帖子。要评估 $_POST 必须完成一个帖子。

 <input type="submit" name="Submit" value="Submit" />

例如

 $menu1 = "<form id='filter' name='filter' method='post' action=' '>    
<p><label>Select Company</label></p>
<select name='filter' id='filter'>
" . $options . "
</select>
<input type=\"submit\" name=\"Submit\" value=\"Send\" />
</form>";

将第二个菜单的所有逻辑放入代码中 if (isset($_POST["filter"])) {

 echo $menu1;

if (isset($_POST["filter"])) {
$submittedValue = $_POST["filter"];
if ($q2= ....)
{
mysqli_stmt_bind_param($q2,"s",$submittedValue);
$s=$submittedValue;
mysqli_stmt_execute($q2);
mysqli_stmt_bind_result($q2,$r);

while(mysqli_stmt_fetch($q2)) {
$name .="<option value=\"".$r['mobname']."\" >".$r['mobname']."</option>";
}

$menu2 = "<form id='moblist' name='moblist' method='post' action=' '>
<p><label>Select Mobile</label></p>
<select name='moblist' id='moblist'>
" . $name . "
</select>
</form>";

echo $menu2;
}
}

更新:

你不能将 $r['mobname'] 与绑定(bind)一起使用。

mysqli_stmt_bind_result($q2,$r);
....
while(mysqli_stmt_fetch($q2)) {
$name .="<option value=\"".$r['mobname']."\" >".$r['mobname']."</option>";

像使用它一样。

mysqli_stmt_bind_result($q2,$r);
....
while (mysqli_stmt_fetch($q2)) {
$name .="<option value=\"".$r."\" >".$r."</option>";
}


mysqli_stmt_close($q2);

更新 2

你忘了把它引用给

 $options .="<option value=". $row['compName'] ." >" . $row['compName'] .    "</option>";

 $options .="<option value=\"". $row['compName'] ."\" >" . $row['compName'] .    "</option>";

关于php - 如何通过从另一个下拉列表中选择值来填充下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com