我有一个输入字段,它根据输入字段值过滤数据。我使用ajax调用在运行时过滤数据。但问题是,我使用多个查询和foreach循环来获取我想要的结果,就像获取一个人的数据一样:姓名、电子邮件、电话、部门。一个人在多个部门工作,所以我使用foreach循环获取他所有的部门以及他的姓名、电子邮件和电话。
当我输出我的数据时,第一人称的细节是正确的,而第二人称的意思是在第二行的部门栏中也显示第一人称的部门,第三人称显示第二人称的部门等等。我怎样才能展示一个人的正确细节?
这是我的密码:
<script>
$(document).ready(function() {
$("#cmp_name").keyup(function(){
$.ajax({
'url':"filter.php",
'data':{name:$("#cmp_name").val()},
'method':'GET',
'success':function(name){
//alert(data);
$("#datas").html(name);
}
})
});
});
</script>
<input type="text" placeholder="Name" name="cmp_name" id="cmp_name">
下面是我的filter.php文件:
<?php
if(isset($_GET['name'])){
$name = $_GET['name'];
$dpt = "";
$ret = "";
$query = mysql_query("select id,name,phone,country_id,departments from persons where name like '%$name%'");
while($data = mysql_fetch_assoc($query)){
$name = $data['name'];
$phone = $data['phone'];
$country_id = $data['country_id'];
$queryr= mysql_query("select country from countries where country_id = $country_id'");
$$country = mysql_fetch_array($queryr);
$country_name = $country['country'];
$depart = $data['departments'];
$department=explode(",",$depart);
foreach($department as $departments){
$depart_fetch = mysql_query("select department_name from departments where id='$departments'");
$fetch1 = mysql_fetch_array($depart_fetch);
$depart_list = $fetch1['description'];
$dpt=$dpt."<div> ".$depart_list." </div>";
}
$ret=$ret."<tr><td> ".$name." </td><td> ".$phone." </td><td> ".$country_name." </td><td> ".$dpt."</td></tr>";
}
echo $ret;
}
?>
2条答案
按热度按时间qmb5sa221#
这句话似乎是错的:
$dpt=$dpt."<div> ".$cns." </div>";
. 我不知道在哪里$cns
来自。我认为应该是:$dpt="<div> ".$depart_list." </div>";
这样就消除了部门之间的重复$dpt
.mwg9r5ms2#
你需要写信
$dpt = "";
就在之前foreach($department as $departments){
. 否则它只会不断地添加到每个循环的列表中,而不是为每个人创建一个新的列表。这将解决您眼前的问题,但是您也应该注意我在上面对您过时的数据访问方法和损坏的数据库设计所做的评论,并在不久的将来,在将代码投入生产使用之前,修复这些问题。