如果这个问题/问题已经得到解答,那么我很抱歉。我无法使用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
中的这个特定值却没有。
答案 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中的键。