最近我在我的表单中从 <input type="button">
更改为 <button>
但是PHP处理的表单不会提交到数据库 . 我在代码中遗漏了什么吗?
基本上我所做的就是改变了这个:
<input type="submit" name="submitAdd" value="Ask Question! " />
对此:
<button type="submit" class="btn" name="submitAdd"><span><span>Ask Question!</span></span></button>
这是基本的PHP处理代码:
//Extract question from submission
$question = (isset($_POST["question"]))?$_POST["question"]:"";
$question_date = (isset($_POST["question_date"]))?$_POST["question_date"]:"";
$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";
//Open connect to database
include("include/session.php");
//Prepare data for submission
$db_question = addslashes($question);
$db_question_date = addslashes($question_date);
//If form has been submitted, insert question into database
if ($submitAdd) {
$sql ="INSERT INTO questions
(question,question_date)
VALUES ('$db_question', '$db_question_date')";
$result = mysql_query($sql);
if (!$result) {
$message = "Failed to add question. MySQL said " . mysql_error();
} else {
header("Location:http://localhost/grill/register.php");
}
}
5 回答
每w3schools.com
重要提示:如果您在HTML表单中使用button元素,则不同的浏览器将提交不同的值 . Internet Explorer将在和标签之间提交文本,而其他浏览器将提交value属性的内容 . 使用input元素在HTML表单中创建按钮 .
http://www.w3schools.com/tags/tag_button.asp
它不起作用,因为按钮版本没有值 . 你的代码说:
但是你有:
比较这个:
它有一个value属性 . 此值将传递给PHP脚本,并且是您正在测试的内容 . 你的
<button>
没有 .没有值
$submitAdd
,即使点击,也会有一个值'' . 执行此操作时,空字符串的计算结果为false:所以,我会推荐一些改变 . 首先,改变这个:
至
因为你并不真正关心 Value .
其次,与此无关,但仍值得一提,我会这样做:
隐藏
submitAdd
输入字段单击按钮调用Javascript函数
标记:
使用Javascript:
我不推荐它,因为你依赖于javascript表单提交 . 但即使是gmail就是这样做的:P
我猜
<button>
标签在__POST中结束了 . 只需在脚本顶部执行此操作即可验证:你为什么要从输入更改为按钮呢?我建议添加一个名为
form_action
的隐藏字段或类似的东西,并将你的if逻辑基于...if ($_POST['form_action'])
而不是if ($submitAdd)
.有同样的问题,我的解决方案不使用JavaScript . 它与之前回答的用户 vsr 主要相同 .
使用要进行汇总的数据添加隐藏输入:
以其他方式命名按钮:
按钮将提交表单,您想要的数据将隐藏在输入中,并且可以进一步提交 . 希望能帮助到你!