我可以让$ _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']的任何想法;不工作?
答案 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_data
或admin
的值添加到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)