基于第一个文本框值从数据库值自动填充文本框

时间:2014-06-03 05:10:52

标签: php jquery json

我正在尝试根据在文本框中输入的值从数据库向文本框自动填充值。我输入名字后就应该得到DOB。

我试过这个例子 http://www.htmlblog.us/open-source/jQueryAutocompleteRelatedFields.html但我不知道为什么它不适合我。

这是我的代码

HTML

<form name="appointment" method="post" action="apponiment_submit.php" enctype="multipart/form-data" onsubmit="return validate()">
<table class="selection">

<tr><td colspan="3"><CENTER><font color="red"><strong>Fields Marked Star Are Compulsory</strong></font></CENTER></td></tr>
<tr><td>Patient Name  :</td><td><input type="text" name="p_name" id="p_name" /><STRONG><font color="red">*</font></STRONG></td></tr>

<tr><td>DOB :</td><td><input type="text" name="p_dob" id="p_dob" class="tcal" /></td></tr>
</table>
</form>

脚本

<script type="text/javascript">

        jQuery(document).ready(function(){

            $('.p_name').autocomplete({
                source:'fill_patient_info1.php', 
                minLength:2,
                select:function(evt, ui)
                {
                    // when a zipcode is selected, populate related fields in this form
                    this.form.p_name.value = ui.item.p_name;
                    this.form.p_dob.value = ui.item.p_dob;
                }
            });
        });

    </script>

和fill_patient_info1.php

// if the 'term' variable is not sent with the request, exit
if ( !isset($_REQUEST['term']) )

    exit;
 echo $_REQUEST['term'];
// connect to the database 
$dblink = mysql_connect('localhost', 'root', '') or die( mysql_error() );
mysql_select_db('hospital');


$rs = mysql_query('select patient_name,dob from patient where patient_name like "'. mysql_real_escape_string($_REQUEST['term']) .'%" order by patient_name asc limit 0,10', $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['patient_name'] .', '. $row['dob'] .' '. $row['patient_name'] 
        );
    }
}

// jQuery wants JSON data
echo json_encode($data);
flush();

我不熟悉json和jquery。所以我没有得到我做错的地方。 而不是$_REQUEST['term'];我尝试了$_REQUEST['p_name'];,但它没有用。

请建议

1 个答案:

答案 0 :(得分:0)

在文件fill_patient_info1.php中,您不必请求term或p_name。你必须写下你的完整查询,没有类似条件。 jQuery UI自动完成将完成剩下的工作。 那你的sql应该是:

select patient_name, dob from patient order by patient_name limit 10

更新: 创建数组时,如果要填充配音,还需要指定如下值:

$data[] = array(
        'label' => $row['patient_name'] .', '. $row['dob'] .' '. $row['patient_name'] ,
        'value' => $row['dob']
    );
相关问题