代码如下: 需要根据不同的搜索条件进行过滤,结果需要分页。
$major = trim($_GET["major"]);
$area = trim($_GET["area"]);
$tel = trim($_GET["tel"]);
$contactor = trim($_GET["contactor"]);
$cpname = trim($_GET["cpname"]);
if($major!=""){
$query.=' and (major like "%'.$major.'%")';
}
if($area!=""){
$query.=' and (area like "%'.$area.'%")';
}
if($cpname!=""){
$query.=' and (company_name like "%'.$cpname.'%")';
}
if($tel!=""){
$query.=' and (telphone="'.$tel.'")';
}
if($contactor!=""){
$query.=' and (contactor="'.$contactor.'")';
}
$sql = 'SELECT count(1) as cnt FROM company WHERE 1=1 ';
$sql.= $query; $cnt = $GLOBALS['db']->getOne($sql);
$sql = 'SELECT company_name,url,address FROM company WHERE 1=1 ';
$sql.= $query;
$sql.= ' limit '.(($page-1) * $size).",".$size;
$res = $GLOBALS['db']->getAll($sql);
$arr = array();
foreach ($res AS $idx => $row)
{
$arr[$idx]['title'] = str_replace($major,("<font color=\"#CC0033\">".$major."</font>"),$row['company_name']);
$arr[$idx]['title'] = str_replace($area,("<font color=\"#CC0033\">".$area."</font>"),$arr[$idx]['title']);
$arr[$idx]['title'] = str_replace($cpname,("<font color=\"#CC0033\">".$cpname."</font>"),$arr[$idx]['title']);
$arr[$idx]['company_name'] = $row['company_name'];
$arr[$idx]['url'] = $row['url'];
$arr[$idx]['address'] = str_replace($area,("<font color=\"#CC0033\">".$area."</font>"),$row['address']);
}
$major = trim($_GET["major"]);
$area = trim($_GET["area"]);
$tel = trim($_GET["tel"]);
$contactor = trim($_GET["contactor"]);
$cpname = trim($_GET["cpname"]);
if($major!=""){
$query.=' and (major like "%'.$major.'%")';
}
if($area!=""){
$query.=' and (area like "%'.$area.'%")';
}
if($cpname!=""){
$query.=' and (company_name like "%'.$cpname.'%")';
}
if($tel!=""){
$query.=' and (telphone="'.$tel.'")';
}
if($contactor!=""){
$query.=' and (contactor="'.$contactor.'")';
}
$sql = 'SELECT count(1) as cnt FROM company WHERE 1=1 ';
$sql.= $query; $cnt = $GLOBALS['db']->getOne($sql);
$sql = 'SELECT company_name,url,address FROM company WHERE 1=1 ';
$sql.= $query;
$sql.= ' limit '.(($page-1) * $size).",".$size;
$res = $GLOBALS['db']->getAll($sql);
$arr = array();
foreach ($res AS $idx => $row)
{
$arr[$idx]['title'] = str_replace($major,("<font color=\"#CC0033\">".$major."</font>"),$row['company_name']);
$arr[$idx]['title'] = str_replace($area,("<font color=\"#CC0033\">".$area."</font>"),$arr[$idx]['title']);
$arr[$idx]['title'] = str_replace($cpname,("<font color=\"#CC0033\">".$cpname."</font>"),$arr[$idx]['title']);
$arr[$idx]['company_name'] = $row['company_name'];
$arr[$idx]['url'] = $row['url'];
$arr[$idx]['address'] = str_replace($area,("<font color=\"#CC0033\">".$area."</font>"),$row['address']);
}
解决方案 »
- 求根据ip打开地区的网页程序,比如在西安就打开a.htm,在汉中就打开b.htm等等。
- php源码被盗
- php 能不能做到让客户端隔离
- PHP中怎样在模板页里嵌套循环
- 数据库设计的问题
- php操作mysql数据库的时候 mysql_query()前必须要mysql_query(set names)的属性吗?
- php对表单的处理....
- 关于JS与PHP的交互问题
- liunx下有没有类似的access的小型数据库 ...请高手给个答案。另外,我在winxp下作完的PHP产品展示程序,没什么技术含量的如果我给它传到l
- 请大家推荐几个用PHP做的网站,谢谢!!
- 关于PHP可插入ACCESS数据,查询ACCESS无数据的问题
- PHP类问题
$sql = 'SELECT count(1) as cnt FROM company WHERE 1=1 ';
$sql.= $query; $cnt = $GLOBALS['db']->getOne($sql); $sql = 'SELECT company_name,url,address FROM company WHERE 1=1 ';
$sql.= $query;
$sql.= ' limit '.(($page-1) * $size).",".$size; 整个页面有二个查询,第一个是统计所有条数的吧。不知道 count(1)是什么意思?
$sql = 'SELECT count(*) as cnt FROM company WHERE 1=1 ';
整个条件查询是用 like 实现的, 感觉是导致查询慢的主要原因。可以考虑将部分查询条件设置成 固定选择性的,然后查询语句可以少用一点 like 了
$query.=' and (major like "%'.$major.'%")';
}
if($area!=""){
$query.=' and (area like "%'.$area.'%")';
}
if($cpname!=""){
$query.=' and (company_name like "%'.$cpname.'%")';
}
if($tel!=""){
$query.=' and (telphone="'.$tel.'")';
}
if($contactor!=""){
$query.=' and (contactor="'.$contactor.'")';
}
1. 缓存查询结果
2. 使用第三方搜索工具,如sphinx
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE company ALL NULL NULL NULL NULL 2383828 Using where
key-> NULL 未用到任何索引你的语句是什么?考虑给相关列建立索引,使用like 'something%'这样的语句,而不是like '%something%'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE company ALL NULL NULL NULL NULL 2383828 Using where
你explian的什么样的sql语句?
未使用到任何索引而整表扫描,除了要建相关索引外,还要注意语句可以有效使用建立好的索引进行搜索。