Я искал ответы на свой вопрос. Многие другие люди задавали один и тот же вопрос, но не получили ответа на их вопрос. Вопрос в том.html form on click do php function
У меня есть следующий код.
function follow_button(){
global $wpdb, $bp;
$loguser = $bp->loggedin_user->id;
$disuser = $bp->displayed_user->id;
if($loguser == $disuser){
} else {
$results = $wpdb->get_results("SELECT * FROM followers WHERE user = $loguser AND profile = $disuser");
if(empty($results)){
echo '<form id="followsubmit" action="" method="post">
<input type="hidden" name="follow_button" value="follow">
<input type="submit" name="submit" value="follow"></form>';
} else {
echo '<form id="followsubmit" action="" method="post">
<input type="hidden" name="unfollow_button" value="unfollow">
<input type="submit" name="submit" value="unfollow"></form>';
}
}
if(isset($_POST['follow']) && strlen($_POST['follow'])) {follow_function();}
if(isset($_POST['unfollow']) && strlen($_POST['unfollow'})) {unfollow_function();}
}
}
Приведенный выше код работает нормально. Но я столкнулся с некоторыми проблемами, когда начал добавлять дополнительные формы на одну и ту же страницу, например, указанную выше. Моя проблема в том, что у меня есть, если бы я нажал кнопку Follow (или unfollow), все остальные формы также будут отправлены.
Я понимаю, где моя проблема.
if(isset($_POST['justsomeform']) && strlen($_POST['justsomeform'})) {justsomeotherfunction();}
примечание: все мои другие формы установили такие значения, как один из перечисленных выше. Поскольку все они установлены, и все они имеют значение, они будут вызывать функцию php, хотя я не нажимал на них.
После исследования, OnClick я пытался поставить функцию внутри формы OnClick действия .. например ..
<form action="" method="post">
<input type="hidden" name="cheese" value="yellocheese">
<input type="submit" name="submit" onclick="' . doafunction() . '" value="I like Cheese"></form>
Но это не сработало, как планировалось. Он будет выполнять функцию при загрузке страницы. Так что я начал поиски, чтобы найти ответ на мою проблему и наткнулся на пример, такие как ..
$("#followsubmit").submit(function(event) {
<?php follow_function(); ?>
event.preventDefault();
});
Но это не сработало .. Итак, я прошу помощи.
В случае, если вопрос не был достаточно ясным или я немного отвлекся. Вот это снова.
У меня есть html-форма. Когда я нажимаю «отправить», мне нужно выполнить php-файл.
примечание: "если (Исеть ..." не будет делать
Спасибо заранее
Редакцией:.!
Ниже показано, как все формы форматированный .
function post_options_content(){
if(isset($_POST['profile_comment_post_button']) && strlen($_POST['profile_comment_post_button'])) {my_comment_content();}
if(isset($_POST['profile_comment_post_button']) && strlen($_POST['profile_comment_post_button'])){my_wall_nav_adder();}
if(isset($_POST['public_comment_post_button']) && strlen($_POST['publiccomment_post_button'])) {my_comment_content();}
if(isset($_POST['public_comment_post_button']) && strlen($_POST['public_comment_post_button'])){my_wall_nav_adder();}
if(isset($_POST['userspost']) && strlen($_POST['userspost'])) {postdatatodatabase();}
if(isset($_POST['main_userspost']) && strlen($_POST['main_userspost'])) {main_activity_post_to_database();}
if(isset($_POST['like']) && strlen($_POST['like'])) {like_wall_post();}
if(isset($_POST['removemypost']) && strlen($_POST['removemypost'])) {removemypost();}
if(isset($_POST['report_this_post']) && strlen($_POST['report_this_post'])) {report_this_post();}
if(isset($_POST['nudge']) && strlen($_POST['nudge'])) {send_nudge_to_database();}
if(isset($_POST['unfollow']) && strlen($_POST['unfollow'])) {unfollow_button_action();}
if(isset($_POST['follow']) && strlen($_POST['follow'])) {add_follow_to_database();}
}add_action('post_options', 'post_options_content');
добавить
do_action('post_options');
в нижней части страницы или функции, которая необходима .. Вот пример.
function main_activity_wall_feed() {
global $wpdb, $bp;
$disuser = $bp->displayed_user->id;
$loguser = $bp->loggedin_user->id;
$pagenum = isset($_GET['pagenum']) ? absint($_GET['pagenum']) : 1;
$limit = 15;
$offset = ($pagenum - 1) * $limit;
$entries = $wpdb->get_results("SELECT * FROM wallpost ORDER BY id desc LIMIT $offset, $limit");
if($entries) {
$count = 1;
$class = '';
foreach($entries as $entry) {
$class = ($count % 2 == 0);
// vars
$bpurl = $entry->sendersurl;
$sendersname = $entry->sendersname;
$memberavatar = $entry->sendersid;
$ownersid = $entry->sendersid;
$hide_me = $entry->anon;
$messageid = $entry->id;
$contentmessage = $entry->message;
$profileid = $entry->profileid;
if ($hide_me == '1'){
echo '<div style="float:left;"><img src="/wordpress/wp-content/plugins/truth-wall/includes/images/mystery-man-50.jpg"></div>';
echo '<div id="loopmessage">';
publicreportanddeletebutton($messageid, $loguser, $ownersid); <-form
anonwhowrotetowho($ownersid, $profileid, $bpurl, $sendersname, $contentmessage);
echo '</div>';
echo '<div id="loopnavbar">';
publiclikebutton($messageid, $loguser); <- Form
public_comment_post_button($messageid, $memberavatar); <-Form
echo '</div>';
get_wall_comments($messageid);
post_comment_form($messageid); <-Form
echo '<hr />';
}
if ($hide_me == '0'){
echo '<div style="float:left;">';
echo '<a href="' . bp_core_get_user_domain($memberavatar) . '">' . bp_core_fetch_avatar (array('item_id' => $memberavatar, 'type' => 'full')) . '</a>';
echo '</div>';
echo '<div id="loopmessage">';
publicreportanddeletebutton($messageid, $loguser, $ownersid); <- Form
whowrotetowho($ownersid, $profileid, $bpurl, $sendersname, $contentmessage);
echo '</div>';
echo '<div id="loopnavbar">';
publiclikebutton($messageid, $loguser); <-Form
public_comment_post_button($messageid, $memberavatar);
echo '</div>'; <- Form
get_wall_comments($messageid);
post_comment_form($messageid); <- Form
echo '<hr />';
}
$count++;
}
} else {
echo 'No posts yet';
}
$total = $wpdb->get_var("SELECT COUNT(*) FROM wallpost");
$num_of_pages = ceil($total/$limit);
$page_links = paginate_links(array(
'base' => add_query_arg('pagenum', '%#%'),
'format' => '',
'prev_text' => __('« Prev', 'aag'),
'next_text' => __('Next »', 'aag'),
'total' => $num_of_pages,
'current' => $pagenum
));
if ($page_links) {
echo $page_links;
}
do_action('post_options');
do_action('post_comment_options');
}
?>
Я бы хотел использовать ajax .. Но не повезло. Я прошу простой пример ajax, показывающий форму с двумя скрытыми значениями, при нажатии, вызывает функцию php.
function truth_form() {
if (is_user_logged_in()) {
echo '<form action="" method="post">
<center><textarea rows="3" cols="65" maxlength="180" name="userspost"></textarea>
<div style="width:250px;padding-top:5px;padding-bottom:25px;">
<div style="float:left;"><input type="checkbox" name="hideme" value="1" /> Anonymous!</div>
<div style="float:right;"><input type="submit" name="submit" value="Post" /> </div></div></form></center>
<br />';
}
}
function main_truth_form() {
if (is_user_logged_in()) {
global $bp;
echo '<form action="" method="post">
<center><textarea placeholder="Remember, be nice!" rows="3" cols="65" maxlength="180" name="main_userspost"></textarea>
<div style="width:250px;padding-top:5px;padding-bottom:25px;">
<div style="float:left;font-size:15px;"><input type="checkbox" name="hideme" value="1" /> Anonymous!</div>
<div style="float:right;"><input type="submit" name="submit" value="Post" /></div></div></form></center>
<br />';
} else {
echo 'Please Log In!';
}
}
function follow_button(){
global $wpdb, $bp;
$loguser = $bp->loggedin_user->id;
$disuser = $bp->displayed_user->id;
if($loguser == $disuser){
} else {
$results = $wpdb->get_results("SELECT * FROM followers WHERE user = $loguser AND profile = $disuser");
if(empty($results)){
echo '<form id="followsubmit" action="" method="post">
<input type="hidden" name="follow_button" value="follow">
<input type="submit" name="submit" value="follow"></form>';
if(isset($_POST['follow']) && strlen($_POST['follow'])) {add_follow_to_database();}
} else {
echo '<form id="followsubmit" action="" method="post">
<input type="hidden" name="unfollow_button" value="unfollow">
<input type="submit" name="submit" value="unfollow"></form>';
if(isset($_POST["unfollow"]) && strlen($_POST["unfollow"])) {unfollow_button_action();}
}
}
}
function profilereportanddeletebutton($messageid, $loguser, $ownersid){
global $wpdb, $bp;
if (is_user_logged_in()) {
if ($loguser == $ownersid) {
echo '<div style="float:right;"><form action="" method="post" ><input type="hidden" name="removemypost" value="' . $messageid . '"><input type="image" src="/wordpress/wp-content/plugins/truth-wall/includes/images/trash.PNG" title="Delete" name="submit"></form></div>';
} else {
$check_if_already_reported = $wpdb->get_results("SELECT * FROM reported_posts WHERE postid = $messageid AND whoreported = $loguser");
if (empty($check_if_already_reported)) {
if (is_user_logged_in()) {
echo '<div id="deletebutton"><form action="" method="post" ><font color="red"><input type="hidden" name="report_this_post" value ="' . $messageid . '"><input type="image" src="/wordpress/wp-content/plugins/truth-wall/includes/images/red-flag.PNG" title="Report" name="submit"></font></form> </div>';
}
} else {
echo '<div id="reportedbutton">Flagged</div>';
}
}
}
}
function publicreportanddeletebutton($messageid, $loguser, $ownersid){
global $wpdb, $bp;
if ($loguser == $ownersid) {
echo '<div style="float:right;"><form action="" method="post" ><input type="hidden" name="removemypost" value="' . $messageid . '"><input type="submit" name="remove_wall_post_submit" value="Remove"></form></div>';
} else {
$check_if_already_reported = $wpdb->get_results("SELECT * FROM reported_posts WHERE postid = $messageid AND whoreported = $loguser");
if (empty($check_if_already_reported)) {
echo '<div style="float:right;"><form action="" method="post" ><font color="red"><input type="hidden" name="report_this_post" value ="' . $messageid . '"><input type="image" src="/wordpress/wp-content/plugins/truth-wall/includes/images/red-flag.PNG" title="Report" name="submit"></font></form></div>';
} else {
echo '<div style="float:right;"><font color="red" size="1">Reported</font></div>';
}
}
}
Это лишь некоторые из них.
Можете ли вы предоставить пример того, как вы структурировали ваши множественные формы, которые были отправлены, когда вы нажали один submit? – Taplar
Я отредактировал вопрос, чтобы дать вам пример того, как данные передаются. Надеюсь, что информации достаточно. – Yadigit
вы можете использовать ajax для выполнения php-функций. Есть ли какая-то причина, по которой вы не используете ajax – akr