我想在同一页面上获得select option 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'];
}?>
答案 0 :(得分:0)
您应该为选项指定名称:
<option name='category' value=\"{$category['categoryID']}\"...
然后尝试添加action='#'
,然后就可以了:
array (size=2)
'category' => string '1' (length=1)
'submit' => string 'Search' (length=6)
Got it!1
请注意,在您的代码中,“all”的选项没有任何值,并且不会显示。
答案 1 :(得分:-1)
你有:
<?php
while($category = mysqli_fetch_array($result1)) {
// output data from each row
echo "<option value=\"{$category['categoryID']}\">{$category['name']}</option>";
}
?>
数组键 - &gt;在模板内部var - &gt;在选项内 - &gt;在一个双引号字符串(将解析变量), - &gt;在while循环中(可能正在运行也可能没有运行)。嵌套复杂性的这种程度肯定会减少你的调试时间和简化调试。
我首先完全忽略html并且:
$category = mysqli_fetch_array($result1)
var_dump($category, $category['categoryID'], $category['name']);
在裸体php中,确保在将任何内容放入html之前确切地拥有了所需内容。
此外,表单操作=&#39;&#39;有时候会导致问题,所以在调试时将它和其他所有内容都明确并修复。
我不得不说你不使用模板引擎让自己变得更难,特别是在早期阶段。你的html + php是低可读性的,这降低了调试的难易程度。使用干净的模板,它可以更容易地调试回声问题,并且作为附带好处,您可以轻松逃脱。