我不明白为什么没有将输入字段“名称”传递给 PHP。我尝试注释掉“名称”代码,但“公司”出现了同样的问题。我在两个输入标签上都设置了 id 和 name 属性。
已修订
HTML
<form name="createAccount" role="form" method="POST" action="php/AddNewAccount.php" >
<div data-toggle="buttons">
<div class="btn-group">
<label class="btn btn-primary">
<input type="radio" name="user-type" id="writer" value="writer" class="sr-only" required >Writer
</label>
<label class="btn btn-primary">
<input type="radio" name="user-type" id="enabler" value="enabler" class="sr-only" required>Enabler
</label>
</div>
</div><br/>
<div class="form-group">
<label for="name">Name:</label>
<input class="form-control" required id="name" name="name">
</div>
<div class="form-group">
<label for="company">Company:</label>
<input class="form-control" required id="company" name="company">
</div>
...
</form>
PHP
function AddNewAccount() {
try {
$acctType = $_POST["user-type"];
if (!isset($acctType) || empty(trim($acctType))) {
throw new Exception('You must select an account type."');
};
echo "account-type=" . $acctType;
$name = $_POST["name"];
if (!isset($name) || empty(trim($name))) {
throw new Exception('You must enter your name."');
};
$company = $_POST["company"];
if (!isset($company) || empty(trim($company))) {
throw new Exception('You must enter your company name."');
};
...
}
错误
[03-May-2016 21:41:44 UTC] PHP Fatal error: Uncaught exception 'Exception' with message 'You must enter your company name."' in /home/deje/public_html/writers-tryst/php/AddNewAccount.php:18
请注意“用户类型”已正确传递。
最佳答案
据我所见;你的代码应该可以工作......不过我没有发现任何错误。但是,为什么您的异常消息中有一个额外的 (") ?您是否在页面上使用了任何 Javascript?如果是;我建议您暂时禁用 Javascript 并尝试再次发送表单而不用JS.
你能试试这个吗?
function AddNewAccount() {
// IT MIGHT BE A GOOD IDEA (IF YOU WILL) TO DUMP THE ENTIRE $_POST GLOBAL VARIABLE
// AND END THE SCRIPT...(TEMPORARILY)... JUST TO SEE WHAT COMES BACK
// var_dump($_POST); exit; // BYPASSTHE DUMPING SINCE WE ARE SURE COMPANY MAKES IT THROUGH TO THIS POINT...
try {
$name = isset($_POST["name"]) ? htmlspecialchars(trim($_POST["name"])) : null;
$company = isset($_POST["company"]) ? htmlspecialchars(trim($_POST["company"])) : null;
$acctType = isset($_POST["user-type"]) ? htmlspecialchars(trim($_POST["user-type"])) : null;
if (!$acctType) {
throw new Exception('You must select an account type.');
}
if (!$name) {
throw new Exception('You must enter your name.');
}
if (!$company) {
throw new Exception('You must enter your company name.');
}
...
}
这是您应用中 var_dump($_POST) 的结果。
如您所见,您的代码仍然是一致的,现在您的数据列表中有公司....所以您可能想要注释掉 var_dump();导出;部分
<?php
//....PREVIOUS CODE
// var_dump($_POST); exit; //NOW COMMENTED OUT TO CONTINUE WITH THE PROGRAM
试试这个,让我们知道它是怎么回事...... 不过,我真诚地希望你一切顺利 现在 ;-)
关于php - Bootstrap 表单没有将值传递给 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015047/