2014-09-29 57 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