我正在尝试根据在文本框中输入的值从数据库向文本框自动填充值。我输入名字后就应该得到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'];
,但它没有用。
请建议
答案 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']
);