我正在尝试根据我选择的选项值从SQL数据库加载一些值。但是我收到以下错误。
这是我的代码:
<p>
<select id = "selectedValueG" name="selectedValueG">
<option value="Amphibians">Amphibians</option>
<option value="Birds">Birds</option>
<option value="Cnidarians">Cnidarians</option>
<option value="Fish">Fish</option>
<option value="Invertebrates">Invertebrates</option>
<option value="Reptiles">Reptiles</option>
</select>
</p>
<?php
if ($_POST['selectedValueG'] == 'Amphibians'){
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = 'Amphibians'");
$groupA = $db->fetch_all();
}
else if ($_POST['selectedValueG'] == 'Birds'){
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = 'Birds'");
$groupA = $db->fetch_all();
}
else if ($_POST['selectedValueG'] == 'Cnidarians'){
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = 'Cnidarians'");
$groupA = $db->fetch_all();
}
else if ($_POST['selectedValueG'] == 'Fish'){
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = 'Fish'");
$groupA = $db->fetch_all();
}
else if ($_POST['selectedValueG'] == 'Invertebrates'){
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = 'Invertebrates'");
$groupA = $db->fetch_all();
}
else if ($_POST['selectedValueG'] == 'Reptiles'){
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = 'Reptiles'");
$groupA = $db->fetch_all();
}?>
<p>
<label for="material">Common Name</label>
<select name="material" id="material">
<option>Select a Common Name:</option>
<?php
foreach($groupA as $m)
{
?>
<option value="<?php echo $m['ID'];?>"><?php echo $m['Common Name'];?></option>
<?php
}
?>
其他一切工作正常,除了我得到未定义的索引,这导致我的第二个选择语句(公共名称)不填充。 感谢您的回答!!!
答案 0 :(得分:0)
$_POST['selectedValueG']
页面加载时未设置。
其他地方还有更多代码吗?它应该是一个AJAX形式吗?
答案 1 :(得分:0)
您应该在访问之前检查变量是否已设置(我假设您要提交表单以获取值)。此外,我认为您的代码可以进行优化。试试这个:
$opt = array("Amphibians", "Birds", "Cnidarians", "Fish", "Invertebrates", "Reptiles");
if( isset($_POST["selectedValueG"]) )
{
if( in_array($_POST["selectedValueG"], $os) )
{
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = '".$_POST["selectedValueG"]."'");
$groupA = $db->fetch_all();
}
}
它的效果更好吗?如果没有,您可以添加print_r($_POST);
以查看POST中传递的变量。
答案 2 :(得分:0)
我猜您正在填充第一个下拉列表,我是对的吗?
如果是你的情况,那么使用Ajax填充第二个下拉列表,
var dataString = {first_combo_selected_value_here}
$.ajax({
type: "POST",
url: "include/addfavorite.php",
data: dataString,
cache: false,
success: function(html)
{
$( "#material" ).append( html );
}
});
其次,你为什么要使用所有这些条件?只需将值作为变量
进行比较$post_value = $_POST['selectedValueG'];
$db->query("select [Common Name] FROM dbo.All_Animals WHERE [Group] = '{$post_value}'");
$groupA = $db->fetch_all();