2015-04-27 3 views
0

Я искал ответы на свой вопрос. Многие другие люди задавали один и тот же вопрос, но не получили ответа на их вопрос. Вопрос в том.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' => __('&laquo; Prev', 'aag'), 
'next_text' => __('Next &raquo;', '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>'; 
    } 
} 
} 

Это лишь некоторые из них.

+0

Можете ли вы предоставить пример того, как вы структурировали ваши множественные формы, которые были отправлены, когда вы нажали один submit? – Taplar

+0

Я отредактировал вопрос, чтобы дать вам пример того, как данные передаются. Надеюсь, что информации достаточно. – Yadigit

+0

вы можете использовать ajax для выполнения php-функций. Есть ли какая-то причина, по которой вы не используете ajax – akr

ответ

0

После возни с расположением кода, я получил его на работу, до сих пор используют

if(isset($_POST["input"]) &&.... {dofunction();} 

Спасибо Rasclatt за подсказку. (Фиксация, как она обрабатывается.)

Вместо того, чтобы иметь функцию хранить все если (Исеть .. Я поместил каждый если (Исеть по каждой форме он принадлежит. Все, кажется, работает правильно.