下拉列表中的选定值似乎未公布

时间:2015-03-27 12:25:55

标签: php html forms post

如果这个问题/问题已经得到解答,那么我很抱歉。我无法使用HTML dropdown找到问题的答案。

我有一个包含多个输入字段和文本区域的表单,每当我发布此表单时,所有这些值都将被发布。但是,我也有一个从我的数据库创建的下拉列表。这个dropdown正确显示但是当我发布表单时,这是表单中唯一似乎没有发布的$_POST变量。 此表单用于编辑现有对象,并确保自动选择对象所具有的类别。

以下是我的表单中dropdown

的部分内容
<?php if (isset($_SESSION['categoryselect'])) {

    $allcategory = $_SESSION['categoryselect'] ?> 
    <select name="selectedcategory" required="required">

    <?php foreach($allcategory as $category) {

        if ($category->sub_categorie == $selectedproduct->sub_category) {?>

            <option value="<?php $category->sub_category?>"selected="selected">
                <?php echo $category->sub_category?>
            </option>

        <?php } else {?>

            <option value="<?php $category->sub_category?>">
                <?php echo $category->sub_category?>
            </option>

        <?php } 
      } ?>
    </select> 
 <?php } ?>

以下是处理已发布表单的代码的一部分:

$name= $_POST['name'];
$name= mysql_escape_string($name);

$sub_category = $_POST['selectedcategory'];
$sub_category = mysql_escape_string($sub_category);

$price= $_POST['price'];
$price= mysql_escape_string($price);

'name''price'的帖子与我的&#39;类别&#39;的格式相同。 这两个字段确实发布了。然而,我的'category'给出了未定义的索引错误。据我所知,这意味着'category'没有发布。但这让我想知道为什么其他值会被发布,而dropdown中的这个特定值却没有。

2 个答案:

答案 0 :(得分:0)

试试这个:

$name = mysqli_real_escape_string($_POST['name']);
$sub_category = mysqli_real_escape_string($_POST['selectedcategory']);
$price= mysqli_real_escape_string($_POST['price']);

您还可以重构前端中的代码,如:

<select name="selectedcategory" required="required">
<?php 
    foreach($allcategory as $category) {
        echo '<option value="' . $category->sub_category . '"'; 
        if ($category->sub_categorie == $selectedproduct->sub_category) {
            echo 'selected="selected"';
        }
        echo '>' . $category->sub_category . '</option>';
    }
?>
</select> 

注意 {@ 1}}函数已被弃用..请改用mysql ..

答案 1 :(得分:0)

$sub_category = $_POST['category'];

应该是

$sub_category = $_POST['selectedcategory'];

因为select的name属性是“selectedcategory”而不是“category”,这是表单发布后$ _POST中的键。