$ _POST无法使用<select> </select>

时间:2014-02-15 11:37:29

标签: php html forms select post

我可以让$ _POST与输入完美配合,但出于某种原因不能与select语句配合使用。这是我的代码:


和registration.php

<form class="form-horizontal" action="results.php" method="post">

     <div class="form-group">
         <label class="col-md-4 control-label" for="user_type">Type</label>
         <div class="col-md-4">
            <select id="user_type" name='user_type' class="form-control">
                <option selected="" value="<?php if (isset($user_type)) { echo 'admin'; } ?>">Faculty</option>
                <option value="<?php if (isset($user_type)) { echo 'registeredUser'; } ?>">Student</option>
            </select>
         </div>
     </div>

     <!-- Submit Button -->
     <div class="form-group">
       <div class="col-md-12">
         <button id="submit" name="submit" class="btn btn-primary center-block"> <span class="k-icon k-si-plus"></span>Submit</button>
       </div>
     </div>

</form>

results.php

    if ($_SERVER["REQUEST_METHOD"] == "POST") 
    {
        // Setting the form inputs to variables
        $first_name = trim($_POST["first_name"]);
        $last_name = trim($_POST["last_name"]);
        $email_address = trim($_POST["email_address"]);

        if (isset($_POST["submit"])) {
            $user_type = $_POST['user_type'];
            echo $user_type . '<br><br>';
        }
        echo $first_name . '<br><br>';
        echo $last_name . '<br><br>';
        echo $email_address . '<br><br>';
    }

输出中:

亚历

科里

alex@mydomain.com


为什么这个$ _POST ['user_type']的任何想法;不工作?

5 个答案:

答案 0 :(得分:0)

我无法在你的代码中看到提交按钮,它上面有name ='submit'吗? 此外,如果您使用chrome检查网络中的帖子(开发人员工具)以查看是否已发布“提交”

答案 1 :(得分:0)

发生这种情况是因为select id="user_type"下的两个选项在执行registration.php时都没有值。

<option value="<?php if (isset($user_type)) { echo 'registeredUser'; } ?>">Student</option>

如果未定义$user_type,则两个选项的值将为""(空字符串) - 我认为这就是发生的情况。

答案 2 :(得分:0)

假设您发布的内容是registration.php的完整内容,那么问题是每个user_name选项的值都包含空字符串。

脚本生成的实际HTML是:

<select id="user_type" name='user_type' class="form-control">
    <option selected="" value="">Faculty</option>
    <option value="">Student</option>
</select>

这是因为您的registration.php脚本在将$user_dataadmin的值添加到registeredUser之前检查是否设置了PHP变量<option>标签

如果我们扩展您的代码,您会发现if条件永远不会触发:

<option selected="" value="<?php 
    if (isset($user_type)) {
        // This will never be fired because the PHP variable $user_data is not set.
        echo 'admin'; 
    } 
    // The result is that nothing is echoed so the HTML reads value=""
 ?>">Faculty</option>

要修复,请删除条件检查:

<select id="user_type" name='user_type' class="form-control">
    <option selected="selected" value="admin">Faculty</option>
    <option value="registeredUser">Student</option>
</select>

或者在脚本开头设置$user_data

<?php $user_data = true; ?>
<form class="form-horizontal" action="results.php" method="post">

   <div class="form-group">
   ...

但我认为您真正想要实现的是确定在表单中选择填充哪些选项。如果是这种情况,您应检查$user_type是否已设置,如果其值与选项值匹配,请将该选项标记为已选中。

<select id="user_type" name='user_type' class="form-control">
    <option <?php 
                if (isset($user_type) && $user_type === 'admin') {
                    echo 'selected="selected" '; 
                } 
            ?>value="admin">Faculty</option>
    <option <?php 
                if (isset($user_type) && $user_type === 'registeredUser') { 
                    echo 'selected="selected" '; 
                } 
             ?>value="registeredUser">Student</option>
</select>

答案 3 :(得分:0)

这是答案

这个问题与PHP有点关系,也与HTML有点关系。 PassKit很好地解释了我最终在我的代码中使用的PHP,以使其正常工作。看看他关于PHP和我的关于HTML的答案。

开幕&lt;形式&gt; tag需要一个匹配&lt; id“的”id“属性。选择&gt;标签的“形式”属性,它们都没有。

解决方案:

  <form id="user-form" class="form-horizontal" action="results.php" method="post">

就在这里 - ^需要:id =“someFormID”


    <!-- Faculty or Student? DROP-DOWN -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="user_type">Type</label>
        <div class="col-md-4">

<小时/>
            <select form="user-form" id="user_type" name='user_type' class="form-control">

就在这里--------------------- ^需要:form =“someFormID”


                <option <?php 
                            if (isset($user_type) && $user_type === 'admin')
                            {
                                echo 'selected="selected" '; 
                            } 
                        ?>value="admin">Faculty</option>
                <option <?php 
                            if (isset($user_type) && $user_type === 'registeredUser')
                            { 
                                echo 'selected="selected" '; 
                            } 
                        ?>value="registeredUser">Student</option>
            </select>
        </div>
    </div>

    <!-- Submit Button -->
    <div class="form-group">
      <div class="col-md-12">
        <button id="singlebutton" name="submit" class="btn btn-primary center-block"> <span class="k-icon k-si-plus"></span>Submit</button>
      </div>
    </div>

</form>        

答案 4 :(得分:-1)

在表单中使用submit按钮或使用if($_POST)

查看帖子