2014-09-29 4 views
0

У меня есть две формы для приема новых пациентов и уже зарегистрированных пациентов соответственно, Номер мобильного телефона используется в качестве первичного ключа.Форма отправки дважды в php

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

Однако в настоящее время, даже когда я ввожу новый номер мобильного телефона, он показывает «уже существующую» ошибку и также вводит данные в db.

, так что я думал, что форма отправляет 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), возможно? –

+0

будьте осторожны с двойным щелчком пользователя по кнопке отправки ... –

+1

Проверяете ли вы журналы сервера, чтобы просмотреть, представлены ли формы дважды? –

ответ

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

tht не работал мой друг ... он снова показывает то же самое: - вводит данные в db и показывает, что уже зарегистрирован :( – Zammuuz

+0

@Ammu после того, как он вставлен, добавьте 'die;', чтобы убить дальнейшее выполнение. –

+0

@ ʰᵈˑ: Я думаю, что не могу этого сделать, потому что после этих операций пишется адрес электронной почты и код отправки sms. если я дам 'die;' после вставки db, то эти операции не будут выполняться правильно? – Zammuuz

Смежные вопросы