在我的模块中,我需要一个类似于自动完成的功能。 我需要的是每当我输入一个名字时创建一个表。比如说,如果我键入John,那么表格应该显示数据库中的所有'John'以及其他属性,如电子邮件ID,专业化,地址等。然后,当我选择特定的'john'时(通过单击名称/检查)框/任何其他方式),他的信息应自动填写我的表格。 我能够使用json(我已经在警告框中打印)提取所有'John'的详细信息,但我面临的两个问题是: 1.)我无法创建对应于'John'的表 2.)当用户点击所需的行时,我不知道如何将数据传递给我的表单。
当我提取数据时,只显示表格中最后一个条目的数据(即最后一个''john'');即只有最后''约翰'才能得救。虽然for循环显示所有''john'。
我正在粘贴我的控制器并查看代码供您参考。
请提出建议。
//Controller:
public function getmasterdata($id=NULL)
{
$this->layout = 'ajax';
$this->autoRender = false;
$q=$this->request->data['nns'];
$details=array();
$this->loadModel('Approved_panel');
$conditions = 'Approved_panel.name LIKE "%'.$q.'%"';
$countt=$this->Approved_panel->find('count',array('conditions'=>$conditions));
$masterdata=$this->Approved_panel->find('all',array('conditions'=>$conditions));
//print_r ($masterdata);
foreach($masterdata as $m)
{
$details=$m['Approved_panel'];
print_r($details);
}
//print_r($details);
$data='';
foreach($details as $key=>$value)
{
$data.=$key.'//'.$value.'&&&';
}
print_r($data);
//echo json_encode($details);
exit;
}
`
//View:
$("#name"+lastChar).on('keyup',function ()
{
$('#master_details').show();
var namess=$('#name'+lastChar).val();
//alert(namess);
$.ajax({
cache: false,
dataType: "html",
type: "POST",
evalScripts: true,
url: '<?php echo Router::url(array('controller'=>'Panels','action'=>'getmasterdata'));?>',
data: ({nns:namess}),
success: function(result){
alert(result);
$('#detailss').val(result);
}
});
});
`
//This is the div in which data should be displayed. These are the headers. I don’t know how to get data into this.
<div id="master_details">
<h2 align="center">Previous Panel Member's Details</h2>
<table>
<thead>
<tr>
<th> Name</th>
<th> Designation</th>
<th> Specialization</th>
<th> University</th>
<th> College</th>
<th> Address</th>
<th> Phone</th>
<th> Email</th>
<th> Papercode</th>
<th> Action</th>
</tr>
</thead>
</table>
</div>
答案 0 :(得分:0)
请检查$ q是否返回任何内容 echo $ q;
或做pr($ this-&gt; request-&gt; data)//获取数组数据的打印
答案 1 :(得分:0)
也许是你的条件陈述的写法。 echo $ sql说的是什么。您还可以在phpmyadmin中运行该语句。试试这个:
$masterdata=$this->Approved_panel->find('all', ['conditions'=>[Approved_panel.name LIKE' => "%'.$q.'%"]];