PHP选择不填充的表单:未定义的索引

时间:2013-12-05 16:51:03

标签: php html sql select

我正在尝试根据我选择的选项值从SQL数据库加载一些值。但是我收到以下错误。 enter image description here

这是我的代码:

<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
}
?>

其他一切工作正常,除了我得到未定义的索引,这导致我的第二个选择语句(公共名称)不填充。 感谢您的回答!!!

3 个答案:

答案 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();