在两个文本框中比较mysql数据库中的值而不提交表单

时间:2013-08-27 01:17:08

标签: php javascript jquery mysql forms

我想检查两个文本框中任何一个文本框中的值与另一个文本框匹配的值而不提交表单。 keypress事件正在处理此事件,将jour_info.php页面中的值发送到get_sid.php页面。我有两个文件

  1. jour_info.php
  2. get_sid.php
  3. 第一个文件中的代码

     <form method="post" name="journ_form" >
    P-ISSN/ISBN<br/><input name="printissn" id="printissn_input" type="text" value="">
                    <input type="text" name="pissnsid"  id="pissnsid" style="width: 30px;" autocomplete="off" value="">
    
                    <span style="color: red;" id="feedback"></span>
     </form>
    
       <script type="text/javascript">
        $(document).ready(function(){
        $('#feedback').load('get_sid.php').show();
    
        $('#printissn_input').keyup(function(){
    
        $.post('get_sid.php', {printissn: journ_form.printissn.value},
          function(result) {
          document.getElementById('pissnsid').value = result;
       }); 
      });
    
    
       $('#pissnsid').keyup(function(){
        $.post('get_sid.php', {pissnsid: journ_form.pissnsid.value},
          function(result) {
            document.getElementById('printissn_input').value = result;
         });
       });
      });
    

    第二个文件中的代码

        <?php
        include 'auth.php';
    
         $printissn = $_POST['printissn'];
         $pissnsid = $_POST['pissnsid'];
    
         if($printissn){
          $check = mysql_query("SELECT printissn, pissnsid FROM jour_entries WHERE    printissn='$printissn'");
          $check_num_rows = mysql_num_rows($check);
          while($row = mysql_fetch_array($check)){
            $get_printissnsid = $row['pissnsid'];
         if($check_num_rows == 0){
          echo '';
          } else if($check_num_rows == 1){
              echo $get_printissnsid; 
           }
            }
         } else if($pissnsid){
        $check = mysql_query("SELECT printissn, pissnsid FROM jour_entries WHERE  pissnsid='$pissnsid'");
         $check_num_rows = mysql_num_rows($check);
         while($row = mysql_fetch_array($check)){
        $get_printissn = $row['printissn'];
    
       if($check_num_rows == 0){
        echo '';
       } else if($check_num_rows == 1){
         echo $get_printissn;    
       } 
        }
       } 
       ?>
    

    现在一切正常,问题是在第一个文本框中输入一个值,它在第二个文本框中显示相应的匹配。但是如果值与两个字段不匹配并且用户需要手动输入数据,则会出现问题。如果没有匹配且用户在第一个文本框中输入值,则第二个文本框值将消失。怎么解决?

1 个答案:

答案 0 :(得分:0)

在将结果放入其他输入字段之前检查结果是否有效:

function(result) {
    if (result != '') {   
        document.getElementById('pissnsid').value = result;
    }
}); 

您还需要修复PHP。 if ($check_num_rows == 0)检查不应该在while循环内,因为当没有行时循环永远不会执行。你甚至根本不需要循环 - 我假设这些查询只能返回1行。所以只需致电mysql_fetch_array() - 如果它返回行,则表示匹配,否则就没有匹配,您应该echo ''