我正在制作一个处理表单的wordpress插件。
我有一个表单,在提交时,调用一个函数将值插入到DB中。
从该函数中,我返回了自动递增的clientID值。
然后将返回值赋给同一页面上新表单中的新变量。它工作,但我现在得到两个DB插入。似乎当我将新的变量赋值给函数时,它会运行两次插入语句。
我想要完成的是将用户插入到函数中的第一个表中,并返回客户端ID,这样我就可以将ID用于另一个表插入。
如有任何帮助,不胜感激。
提交时调用函数插入数据库的表单
<form action="" id="new_client_form" method="POST" onsubmit="return submit_new_client()">
包含DB代码并返回Client ID的函数
function submit_new_client () {
if (isset($_POST['submit'])) {
/////
$insertClient = $db -> exec("INSERT INTO client SET .......");
$clientId = $db -> lastInsertId();
echo $clientId .'Is the New client ID';//This is printing the correct ID(used for testing)
}
return $clientId;
}
add_action('init', 'submit_new_client');
新形式/我将变量赋值给函数
<?php
$client = submit_new_client();
if(isset($_POST['submit'])) {
echo "<p>The Client Id is</p>";
echo "$client";
} else {
echo "<p>No client ID</p>";
}
?>
例如,一旦提交了表单,我将从函数中得到一个Echo,说客户端ID是32。但是当我进入下一个表单时它会显示客户端ID是33
首先,在HTML表单中,您有onsubmit="return submit_new_client()
。onsubmit
属性用于调用Javascript函数,而不是PHP函数,所以我很惊讶PHP函数会被调用。
你能完整地发布代码吗?
编辑:我对你正在调用的add_action
函数做了一个简短的搜索。您确定这个调用在某个时刻没有调用submit_new_client()函数吗?请参阅我在这里找到的文档:https://codex.wordpress.org/Function_Reference/add_action