获取选择选项 php 的值


Getting value of select option php

我想在同一页面上获得选择选项 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可读性低,这降低了调试的便利性。 使用干净的模板,调试回显问题会更容易,并且作为附带好处,您将轻松转义。