我想在同一页面上获得选择选项 php 的值。我从数据库中带来了选择列表,并将它们列在选择中。但即使我在列表中选择了一些东西,它也没有发布。下面的代码有问题吗?提前谢谢。
<div class="ibox-content m-b-sm border-bottom">
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label class="control-label" for="status">Search by category</label>
<form action="" method="POST" >
<select name="category" class="form-control">
<option value="" selected>All</option>
<?php
while($category = mysqli_fetch_array($result1)) {
// output data from each row
echo "<option value='"{$category['categoryID']}'">{$category['name']}</option>";
}
?>
</select>
<input class="btn btn-primary" type="submit" name="submit" value="Search">
</input>
</form>
</div>
</div>
</div>
</div>
<?php
if (isset($_POST['submit'])) {
echo "Got it!";
echo $_POST['category'];
}?>
您应该为该选项指定一个名称:
<option name='category' value='"{$category['categoryID']}'"...
并尝试添加action='#'
,然后它起作用:
array (size=2)
'category' => string '1' (length=1)
'submit' => string 'Search' (length=6)
Got it!1
请注意,在您的代码中,"all"选项没有值,也不会显示。
你有:
<?php
while($category = mysqli_fetch_array($result1)) {
// output data from each row
echo "<option value='"{$category['categoryID']}'">{$category['name']}</option>";
}
?>
数组键 -> 在模板 var 中 -> 在选项 -> 在双引号字符串中(将解析变量),-> 在 while 循环中(可能正在运行,也可能不运行)。 这种嵌套的复杂性肯定会缩短调试时间和调试简单性。
我会首先完全忽略 html,然后:
$category = mysqli_fetch_array($result1)
var_dump($category, $category['categoryID'], $category['name']);
在裸PHP中,确保在将任何内容放入HTML之前,您拥有所需的内容。
此外,form action='' 有时会导致问题,因此在调试时可以显式和修复它和其他所有内容。
我不得不说,不使用模板引擎会让事情变得更加困难,尤其是在早期阶段。 您的html + php可读性低,这降低了调试的便利性。 使用干净的模板,调试回显问题会更容易,并且作为附带好处,您将轻松转义。