Php Wordpress。每个表单提交上的表单特定功能,以避免再次重复表单提交
在我的WordPress v5.5.3中,我有两个表单,在一个页面中具有相同的输入字段:Php Wordpress。每个表单提交上的表单特定功能,以避免再次重复表单提交,php,wordpress,Php,Wordpress,在我的WordPress v5.5.3中,我有两个表单,在一个页面中具有相同的输入字段: <form id="one" method="post"> <input name="name" type="text" value="My Name"> <input name="movie" type="hidden"
<form id="one" method="post">
<input name="name" type="text" value="My Name">
<input name="movie" type="hidden" value="1">
<button type="submit" name="submitone">Submit</button>
</form>
<form id="two" method="post">
<input name="name" type="text" value="My Name">
<input name="movie" type="hidden" value="2">
<button type="submit" name="submittwo">Submit</button>
</form>
但是,使用上述代码将数据保存两次。
我已尝试识别提交的表格,并将数据保存在以下位置:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['submitone'])) {
save_data();
}
}
这不起作用,也不保存表单数据。
如何识别提交的表单并保存数据
编辑1
在save_data()下面代码>方法:
// input variables
$name = filter_input(INPUT_POST, 'name');
$movie = filter_input(INPUT_POST, 'movie');
// Table
global $wpdb;
$tablename = $wpdb->prefix . 'names';
// Name ID
$default_row = $wpdb->get_row("SELECT * FROM $tablename ORDER BY id DESC LIMIT 1");
if ($default_row != null) {
$id = $default_row->id + 1;
} else {
$id = 1;
}
// Names
$data = array(
'id' => $id,
'name' => $name,
'movie' => $movie,
);
// INSERT DATA INTO THE TABLE
$new_name = $wpdb->insert($tablename, $data);
在我看来,最简单的方法就是在表单中添加隐藏的输入字段,这些字段可以帮助您识别它。然后,当提交其中一个表单时,只会给出它的隐藏字段
示例:
,然后在$\u POST['formn']
中,您将获得“1”。我认为最简单的方法是向表单中添加隐藏的输入字段,并添加有助于您识别它的内容。然后,当提交其中一个表单时,只会给出它的隐藏字段
示例:
然后在$\u POST['formn']
中,您将获得“1”。检查以下代码
包含两个表单和相同页面模板的页面模板用于处理表单Post方法
您可能需要更改输入字段名“name”,并为其添加前缀以使其唯一。(“我的名字”在这个代码示例中)。Wordpress将表单输入中的某些字段名视为保留关键字。如果您使用任何保留名称,WordPress的行为都很奇怪
<?php
/**
* Template Name: Form Template
* Author: Meera Datey
* Template Post Type: post, page
*/
// Handle POST Submission here.
if(isset($_POST['submitone'])) {
print_r('First Form submitted');
$my_name = $_POST['my_name'];
// This should have input name from first form
print_r($my_name);
save_data();
}
if(isset($_POST['submittwo'])) {
print_r('Second Form submitted');
$my_name = $_POST['my_name'];
// This should have input name from second form
print_r($my_name);
//save_data();
}
?>
<!-- This is a GET Request -->
<form method="post" action="<?php the_permalink(); ?>">
<input name="my_name" type="text" value="My Name">
<button type="submit" name="submitone">Submit</button>
</form>
<form method="post" action="<?php the_permalink(); ?>">
<input name="my_name" type="text" value="My Name">
<but
检查以下代码
包含两个表单和相同页面模板的页面模板用于处理表单Post方法
您可能需要更改输入字段名“name”,并为其添加前缀以使其唯一。(“我的名字”在这个代码示例中)。Wordpress将表单输入中的某些字段名视为保留关键字。如果您使用任何保留名称,WordPress的行为都很奇怪
<?php
/**
* Template Name: Form Template
* Author: Meera Datey
* Template Post Type: post, page
*/
// Handle POST Submission here.
if(isset($_POST['submitone'])) {
print_r('First Form submitted');
$my_name = $_POST['my_name'];
// This should have input name from first form
print_r($my_name);
save_data();
}
if(isset($_POST['submittwo'])) {
print_r('Second Form submitted');
$my_name = $_POST['my_name'];
// This should have input name from second form
print_r($my_name);
//save_data();
}
?>
<!-- This is a GET Request -->
<form method="post" action="<?php the_permalink(); ?>">
<input name="my_name" type="text" value="My Name">
<button type="submit" name="submitone">Submit</button>
</form>
<form method="post" action="<?php the_permalink(); ?>">
<input name="my_name" type="text" value="My Name">
<but
您应该使用wordpress核心:
<form id="one" method="post">
<input name="name" type="text" value="My Name">
<input name="movie" type="hidden" value="1">
<input type="hidden" name="action" value="submitone">
<button type="submit" name="submitone">Submit</button>
</form>
<form id="one" method="post">
<input name="name" type="text" value="My Name">
<input name="movie" type="hidden" value="1">
<input type="hidden" name="action" value="submitone">
<button type="submit" name="submittwo">Submit</button>
</form>
function submitone_handle_form_submit() {
// here $_POST
}
// Use your hidden "action" field value when adding the actions
add_action( 'admin_post_nopriv_submitone', 'submitone_handle_form_submit' );
add_action( 'admin_post_submitone', 'submitone_handle_form_submit' );
function submittwo_handle_form_submit() {
// here $_POST
}
// Use your hidden "action" field value when adding the actions
add_action( 'admin_post_nopriv_submittwo', 'submittwo_handle_form_submit' );
add_action( 'admin_post_submittwo', 'submittwo_handle_form_submit' );
提交
提交
函数submittone\u handle\u form\u submit(){
//这里是邮政局
}
//添加操作时使用隐藏的“操作”字段值
添加操作('admin\u post\u nopriv\u submitone'、'submitone\u handle\u form\u submit');
添加操作('admin'u post'u submitone','submitone'u handle'u form'u submit');
函数提交双句柄表单提交(){
//这里是邮政局
}
//添加操作时使用隐藏的“操作”字段值
添加操作('admin\u post\u nopriv\u submittwo'、'submittwo\u handle\u form\u submit');
添加操作('admin\u post\u submittwo'、'submittwo\u handle\u form\u submit');
您应该使用wordpress核心:
<form id="one" method="post">
<input name="name" type="text" value="My Name">
<input name="movie" type="hidden" value="1">
<input type="hidden" name="action" value="submitone">
<button type="submit" name="submitone">Submit</button>
</form>
<form id="one" method="post">
<input name="name" type="text" value="My Name">
<input name="movie" type="hidden" value="1">
<input type="hidden" name="action" value="submitone">
<button type="submit" name="submittwo">Submit</button>
</form>
function submitone_handle_form_submit() {
// here $_POST
}
// Use your hidden "action" field value when adding the actions
add_action( 'admin_post_nopriv_submitone', 'submitone_handle_form_submit' );
add_action( 'admin_post_submitone', 'submitone_handle_form_submit' );
function submittwo_handle_form_submit() {
// here $_POST
}
// Use your hidden "action" field value when adding the actions
add_action( 'admin_post_nopriv_submittwo', 'submittwo_handle_form_submit' );
add_action( 'admin_post_submittwo', 'submittwo_handle_form_submit' );
提交
提交
函数submittone\u handle\u form\u submit(){
//这里是邮政局
}
//添加操作时使用隐藏的“操作”字段值
添加操作('admin\u post\u nopriv\u submitone'、'submitone\u handle\u form\u submit');
添加操作('admin'u post'u submitone','submitone'u handle'u form'u submit');
函数提交双句柄表单提交(){
//这里是邮政局
}
//添加操作时使用隐藏的“操作”字段值
添加操作('admin\u post\u nopriv\u submittwo'、'submittwo\u handle\u form\u submit');
添加操作('admin\u post\u submittwo'、'submittwo\u handle\u form\u submit');
在调用save_data()之前,您是否可以尝试打印POST数据,看看您从POST中得到了什么?是的,我得到了输入值。那么,您是只得到一个提交值还是两个提交值?还可以显示您的save_data方法吗?更新了原始问题。在调用save_data()之前,您是否可以尝试打印POST数据看看你在帖子中得到了什么?是的,我得到了输入值。那么你是只得到一个提交值还是两个提交值?你也可以显示你的保存数据方法吗?更新了原来的问题。if($\u SERVER['REQUEST\u method']='post')
是不是比(isset)更正确的检查整个表单是否提交的方法($\u POST['formn'])
哪个只检查一个输入字段?老实说,我不相信使用$\u服务器['REQUEST\u METHOD']=='POST'
比任何其他检查方法都更正确。但我的观点是使用这一字段来选择提交了哪一个表单,而不是检查其中是否有任何表单。这不是您正在寻找的吗?if($\u SERVER['REQUEST\u METHOD']='POST')
检查是否提交了整个表单的正确方法比(isset($\u POST['formn'])
只检查一个输入字段更正确?老实说,我不相信使用$\u服务器['REQUEST\u METHOD']=='POST'
比任何其他检查方法都更正确。但我的观点是使用这一字段来选择提交了哪一个表单,而不是检查是否有任何表单。这不是您要查找的吗?