0

最近我在我的表单中从 更改<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处理代码:

//从提交中提取问题
$question = (isset($_POST["question"]))?$_POST["question"]:"";
$question_date = (isset($_POST["question_date"]))?$_POST["question_date"]:"";
$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

//打开连接数据库
包括(“包括/session.php”);

//准备提交数据
$db_question = 添加斜杠($question);
$db_question_date = 添加斜杠($question_date);

//如果表单已经提交,将问题插入数据库
如果($submitAdd){
    $sql ="插入问题
    (问题,question_date)
    值 ('$db_question', '$db_question_date')";
    $result = mysql_query($sql);
    如果(!$结果){
        $message = "添加问题失败。MySQL 说 " . mysql_error();
    } 别的 {
        header("位置:http://localhost/grill/register.php");
    }
}
4

5 回答 5

3

它不起作用,因为按钮版本没有价值。你的代码说:

$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

但是你有:

<button type="submit" class="btn" name="submitAdd"><span><span>Ask Question!</span></span></button>

将此与以下内容进行比较:

<input type="submit" name="submitAdd" value="Ask Question! " />

它具有 value 属性。这个值被传递给 PHP 脚本并且是你正在测试的。你的<button>没有。

没有 value $submitAdd,即使被点击,也会有一个 '' 的值。执行此操作时,空字符串的计算结果为 false:

if ($submitAdd) {

因此,我建议进行一些更改。首先,改变这个:

$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

$submitAdd = isset($_POST['submitAdd']);

因为你并不真正关心价值。

其次,与此无关但仍然值得一提,我会这样做:

$db_question = mysql_real_escape_string($question);
$db_question_date = mysql_real_escape_string($question_date);
$sql = <<<END
INSERT INTO QUESTIONS (question, question_date)
VALUES ('$db_question', '$db_question_date')
END;
于 2009-11-25T23:44:41.303 回答
1
  1. submitAdd隐藏输入字段
  2. 单击按钮时调用 Javascript 函数

标记:

<input type="hidden" name="submitAdd" value="Ask Question! " />

<button type="submit" onclick="submitForm();" class="btn" name="submitAdd">
<span><span>Ask Question!</span></span></button>

Javascript:

function submitForm(){
    document.forms["form_name"].submit();
}

我不推荐它,因为您将依赖 javascript 来提交表单。但即使是gmail也是这样做的:P

于 2009-11-26T01:35:54.373 回答
0

有同样的问题,我的解决方案不使用 javascript。与用户vsr之前回答的基本相同。

使用要汇总的数据添加隐藏输入:

<input name="submitAdd" type="hidden" value=" Ask Question! ">

以其他方式命名按钮:

<button type="submit" class="btn" name="submitsForm"> Ask Question! </button>

按钮将提交表单,您想要的数据将在隐藏输入中,并很好地提交。希望能帮助到你!

于 2014-01-07T13:12:02.527 回答
0

我猜<button>标签没有被提交,因此不会在 $_POST 中结束。只需在脚本顶部执行此操作即可验证:

print $_POST["submitAdd"];

为什么你还是从输入改为按钮?我建议添加一个名为form_action或类似的隐藏字段,并将您的 if 逻辑基于...if ($_POST['form_action'])而不是if ($submitAdd).

于 2009-11-25T23:43:00.787 回答
0

根据 w3schools.com

重要提示:如果您在 HTML 表单中使用按钮元素,不同的浏览器将提交不同的值。Internet Explorer 将提交 and 标记之间的文本,而其他浏览器将提交 value 属性的内容。使用 input 元素在 HTML 表单中创建按钮。

http://www.w3schools.com/tags/tag_button.asp

于 2009-11-25T23:43:34.297 回答