下拉列表中的选定值似乎未发布
Selected value in dropdown does not seem to be posted
如果此 problem/question 已得到答复,那么我深表歉意。我找不到 HTML dropdown
.
问题的答案
我有一个包含多个输入字段和文本区域的表单,每当我 post 这个表单时,所有这些值都会被 post 编辑。但是,我还有一个从我的数据库创建的下拉列表。此 dropdown
显示正确,但当我 post 表单时,这是表单中唯一似乎未被 post 编辑的 $_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 } ?>
下面是处理 posted 形式的代码的一部分:
$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'
的 post 也与我的 'category' 形式相同
这 2 个字段确实得到 posted。然而,我的 'category'
给出了一个未定义的索引错误。据我所知,这意味着 'category'
不会被 post 编辑。但这让我想知道为什么其他值确实得到 posted 而来自 dropdown
的这个特定值却没有。
试试这个:
$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>
请注意 mysql
函数已弃用..请改用mysqli
..
$sub_category = $_POST['category'];
应该是
$sub_category = $_POST['selectedcategory'];
因为 select 的 name 属性是 "selectedcategory" 而不是 "category",这就是表单发布后 $_POST 中的键。
如果此 problem/question 已得到答复,那么我深表歉意。我找不到 HTML dropdown
.
我有一个包含多个输入字段和文本区域的表单,每当我 post 这个表单时,所有这些值都会被 post 编辑。但是,我还有一个从我的数据库创建的下拉列表。此 dropdown
显示正确,但当我 post 表单时,这是表单中唯一似乎未被 post 编辑的 $_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 } ?>
下面是处理 posted 形式的代码的一部分:
$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'
的 post 也与我的 'category' 形式相同
这 2 个字段确实得到 posted。然而,我的 'category'
给出了一个未定义的索引错误。据我所知,这意味着 'category'
不会被 post 编辑。但这让我想知道为什么其他值确实得到 posted 而来自 dropdown
的这个特定值却没有。
试试这个:
$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>
请注意 mysql
函数已弃用..请改用mysqli
..
$sub_category = $_POST['category'];
应该是
$sub_category = $_POST['selectedcategory'];
因为 select 的 name 属性是 "selectedcategory" 而不是 "category",这就是表单发布后 $_POST 中的键。