2014-09-29 84 views
0

我有兩個預約表格分別爲新患者和已登記的患者, 手機號碼被用作主鍵。表格在php中提交兩次

因此,在新的患者註冊中,我們檢查手機是否已經存在,如果是,則顯示錯誤,否則將新數據輸入到表格中。

但是,目前即使當我輸入一個新的手機號碼,它顯示「已經存在」的錯誤,也輸入數據到數據庫。

所以我想表單提交了2次,但我無法弄清楚發生了什麼。

我的PHP文件中的代碼片段是:

if ($_POST['isnewpatient'] == "true") { 

    @$name = mysql_real_escape_string(trim($_POST['aaptntname'])); 
    @$email = mysql_real_escape_string(trim($_POST['emlid'])); 
    @$mobile = mysql_real_escape_string(trim($_POST['mobile'])); 
    $qqcSql = "select * from " . WP_eemail_TABLE_SUB 
     . " where eemail_mobile_sub ='" . trim($_POST['mobile']) 
     . "' OR eemail_patient_id ='" . trim($_POST['mobile']) . "'"; 

    $qqdata1 = $wpdb->get_results($qqcSql); 
    var_dump($qqdata1); 

    if (!empty($qqdata1)) { 

     $err = 1; 
     echo "<div id='message' class='aerror'>Already patient details exists. Use your existing patient ID !</div>\n"; 

    } 
    else { 
     $pt_id = mysql_real_escape_string(trim($_POST['mobile'])); 
     $sql = "insert query to WP_Appointment"; 

     $wpdb->get_results($sql); 

     $sqls = "insert query to WP_Appointment_Contact"; 

     $wpdb->get_results($sqls); 

     $sqql = " insert query to table WP_eemail_Table_Sub"; 

     $wpdb->get_results($sqql); 

     echo "<div id='message' class='asuccess'>Request has been sent for appointment </div>"; 

    } 
} 
else { 

    // Already registered patient form 

} 

<form name="FormEdit" action="<?php echo the_permalink(); ?>" method="post" onsubmit="return p_appointment()" class="aform"> 

    /* Form part */ 
</form> 

JavaScript部分

function p_appointment() 
{ 
    if($('input:radio[name=new_patient]:checked').val() == "new") 
     document.FormEdit.isnewpatient.value = "true"; 
    if($('input:radio[name=new_patient]:checked').val() == "old") 
     document.FormEdit.isnewpatient.value = "false"; 

    document.FormEdit.appsmssend.value = "true"; 
    document.FormEdit.appemailsend.value = "true"; 

} 
+1

[**'的preventDefault();'**](https://developer.mozilla.org/en/docs/Web /API/event.preventDefault)也許? – 2014-09-29 08:01:07

+0

小心用戶雙擊提交按鈕... – 2014-09-29 08:03:17

+1

您是否檢查服務器日誌以查看錶單是否提交了兩次? – 2014-09-29 08:10:14

回答

0

改變你的js方法是:

function p_appointment() 
{ 
    if($('input:radio[name=new_patient]:checked').val() == "new") 
     document.FormEdit.isnewpatient.value = true; 
    if($('input:radio[name=new_patient]:checked').val() == "old") 
     document.FormEdit.isnewpatient.value = false; 


    // document.FormEdit.appsmssend.value = "true"; 
    // document.FormEdit.appemailsend.value = "true"; commented because i did not added these field while testing. 
    return document.FormEdit.isnewpatient.value; 

} 

這是我作爲形式:

<form name="FormEdit" method="post" onsubmit="return p_appointment()" class="aform"> 
<input type="text" name="name"/> 
<input type="submit" value="submit"/> 
</form> 

不使用:

if ($_POST['isnewpatient'] == "true") { 

} 
if ($_POST['isnewpatient'] == "false") { 

} 

使用:

if($_POST['isnewpatient']) { 

}else { 

} 
+0

這沒有奏效我的朋友...它再次顯示了同樣的事情: - 輸入數據在db並顯示已經註冊:( – Zammuuz 2014-09-29 08:50:54

+0

@Ammu然後插入後添加一個'死亡;'以殺死進一步執行 – 2014-09-29 08:58:39

+0

@ʰᵈˑ:我想我不能這樣做,因爲在此操作後,一個電子郵件和短信發送代碼被寫入。如果在db插入後給予'die',那麼這些操作將不會正確執行? – Zammuuz 2014-09-29 09:06:15