如何把sql语句由倒序改为正序?

weixin_40390628 2017-09-25 06:40:27
想把信息展示效果改为正序的,不知道从何下手。默认代码是先展示旧的,如图

这个是我想要的展示效果。


如果可以请大神们直接给修改后的代码给我。。


<?php
define('IN_PHPMPS', true);
require dirname(__FILE__) . '/include/common.php';

$keyword = !empty($_REQUEST['keywords']) ? htmlspecialchars(trim($_REQUEST['keywords'])) : '';
$areaid = !empty($_REQUEST['area']) ? intval($_REQUEST['area']) : 0;
$catid = !empty($_REQUEST['id']) ? intval($_REQUEST['id']) : 0;
$page = !empty($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;

$tm=intval(time()-365*24*3600);//限制为365天内发布的信息
$tm=" AND postdate > ".$tm.' ';
$ed=" AND enddate > ".time().' ';//有效期大于今天的,未过期的
$keywords=$keywords_a='';
if(!empty($keyword)) {
$q=split("[ /.]",$keyword);
$q=array_slice($q,0,3,false);//最大3个关键词
$r_exp='';$r_exp2='';
foreach ($q as $k=>$v){
if (!$v) continue;
$r_exp.=$v.'|';
$r_exp2.='.*'.$v;
}
$r_exp=substr($r_exp,0,-1);$r_exp2.='.*';
if(trim($r_exp)){
$keywords = "AND (concat(title,i.keywords,i.description,i.phone,i.linkman,i.qq,i.email,i.address) REGEXP '$r_exp') ";//INFO,标题,关键字,描述,电话,联系人,qq,邮箱,地址
$keywords_a = "AND (concat(title,a.keywords,a.description,content) REGEXP '$r_exp')";//ARTICLE,标题,关键字,描述,内容
$keywords_c = "AND (concat(comname,c.keywords,c.description,c.introduce,c.phone,c.linkman,c.qq,c.email,c.fax,c.address) REGEXP '$r_exp')";//COMPANY,商家名,关键字,描述,内容,电话,联系人,qq,邮箱,传真,地址

$ord=" order by (title REGEXP '$r_exp2') desc,(title REGEXP '$r_exp') desc,(i.description REGEXP '$r_exp') desc,postdate desc,id desc ";//INFO_ORDER
$ord_a=" order by (title REGEXP '$r_exp2') desc,(title REGEXP '$r_exp') desc,(content REGEXP '$r_exp') desc,addtime desc,id desc ";//ARTICLE_ORDER
$ord_c=" order by (comname REGEXP '$r_exp2') desc,(comname REGEXP '$r_exp') desc,(keywords REGEXP '$r_exp') desc,postdate desc,id desc ";//COMPANY_ORDER
}else{
$ord_c=$ord=' order by postdate desc,id desc ';
$ord_a=' order by addtime desc,id desc ';
}
}else{
$ord_c=$ord=' order by postdate desc,id desc ';
$ord_a=' order by addtime desc,id desc ';
}
$cats = get_cat_children($catid);
$category = $catid ? " AND catid IN ($cats)": '';
$areas = get_area_children($areaid);
$area = $areaid ? " AND areaid IN ($areas)" : '';

$cus_in = '';
$cus_num = 0;
$cus_arg = array();
if(!empty($_REQUEST['custom'])) {
$sql = "SELECT infoid, COUNT(*) AS num FROM {$table}cus_value WHERE 0 ";
foreach($_REQUEST['custom'] AS $key => $val) {
$key=addslashes_deep($key);
if(!empty($val)) {
$cus_num++;
$sql .= " or (1 ";
if(is_array($val)) {
foreach($val as $k=>$v){$val[$k]=addslashes_deep($v);}
$cus_tom = get_custom_info($key);
$sql .= " AND cusid = '$key'";
if($cus_tom[search]=='2') {
if(!empty($val['from'])) {
$sql .= is_numeric($val['from']) ? " AND cusvalue >= " . floatval($val['from']) : " AND cusvalue >= '$val[from]'";
$cus_arg["custom[$key][from]"] = $val['from'];
}
if(!empty($val['to'])) {
$sql .= is_numeric($val['to']) ? " AND cusvalue <= " . floatval($val['to']) : " AND cusvalue <= '$val[to]'";
$cus_arg["custom[$key][to]"] = $val['to'];
}
} elseif ($cus_tom[search]=='4') {
$val = join(',', $val);
$sql .= " AND cusid = '$key' AND cusvalue like '%$val%' ";
$cus_arg["custom[$key]"] = $val;
}
} else {
$val=addslashes_deep($val);
$sql .= " AND cusid = '$key' AND cusvalue like '%$val%' ";
$cus_arg["custom[$key]"] = $val;
}
$sql .= ')';
}
}
if($cus_num>0) {
$sql .= " GROUP BY infoid HAVING num = '$cus_num' ";
$row = $db->getCol($sql);
if(count($row)) {
$row = join(',',$row);
$cus_in = " AND id in ($row)";
} else {
$cus_in = " AND 0 ";
}
}
}

$size = 15;
$sql="SELECT COUNT(*) FROM (";
$sql .= "SELECT id FROM {$table}info AS i WHERE is_check = 1 " .$ed. " $cus_in AND (( 1 " . $category . $keywords . $area ." ))";
$sql .=" UNION ALL ";
$sql .="SELECT id FROM {$table}article as a WHERE 1 ".$keywords_a;
$sql .=" UNION ALL ";
$sql .="SELECT comid FROM {$table}com as c WHERE 1 ".$keywords_c;
$sql .=") as total";
$count = $db->getOne($sql);
$max_page = ($count> 0) ? ceil($count / $size) : 1;
if($page>$max_page)$page = $max_page;
$pager['search']=array();
if($keyword) $pager['search']['keywords']=stripslashes(urlencode($keyword));
if($cat) $pager['search']['id']=$cat;
if($area) $pager['search']['area']=$area;
if(!empty($pager['search'])) $pager['search'] = array_merge($pager['search'], $cus_arg);
$pager = get_pager('search.php', $pager['search'], $count, $page, $size);

$sql = "(SELECT i.id,i.title,i.description,i.postdate,i.thumb,c.catname ,'1' as f_table FROM {$table}info AS i LEFT JOIN {$table}category AS c ON i.catid=c.catid WHERE is_check=1 $cus_in AND (( 1 " . $category . $keywords . $area . " )) ".$ord.")";
$sql .=" UNION ";
$sql .="(SELECT a.id,a.title,a.description,a.addtime,a.thumb,t.typename as catname,'2' as f_table FROM {$table}article AS a LEFT JOIN {$table}type AS t ON a.typeid=t.typeid WHERE 1 ".$keywords_a.$ord_a.")";
$sql .=" UNION ";
$sql .="(SELECT c.comid as id,c.comname as title,c.description,c.postdate,c.thumb,t.catname,'3' as f_table FROM {$table}com AS c LEFT JOIN {$table}com_cat AS t ON c.catid=t.catid WHERE 1 ".$keywords_c.$ord_c.")";
$sql.=" LIMIT $pager[start],$pager[size]";
$res = $db->query($sql);
$articles = array();
while($row = $db->fetchRow($res)) {
$t_arr=array();
$t_arr['title'] = cut_str($row['title'],'50');
$t_arr['catname'] = $cat_array[$row['catid']];
$t_arr['thumb']=trim($row['thumb'])?trim($row['thumb']):'';
$t_arr['description']=$row['description'];
$t_arr['postdate'] = date('y年m月d日', $row['postdate']);
if($row['f_table']=='1'){
$t_arr['url'] = url_rewrite('view',array('vid'=>$row['id']));
}elseif($row['f_table']=='2'){
$t_arr['url'] = url_rewrite('article',array('act'=>'view','aid'=>$row['id']));
}elseif($row['f_table']=='3'){
$t_arr['url'] = url_rewrite('com',array('act'=>'view','comid'=>$row['id']));
}
if($keyword) {
foreach($q as $k=>$v){
if(!$v) continue;
$t_arr['title'] = preg_replace('/'.$v.'/i','<font color=red>'.$v.'</font>', $t_arr['title']);
$t_arr['description'] = preg_replace('/'.$v.'/i','<font color=red>'.$v.'</font>', $t_arr['description']);
}
}
$articles[] = $t_arr;
}

$cat_hot = get_info($cats, $areas, '10', '','click','10');

$here = array('name'=>'搜索结果');
$seo['title'] = '搜索结果 - 临淄信息港';
$seo['keywords'] = $CFG['keywords'];
$seo['description'] = $CFG['description'];

include template('search');
?>
...全文
833 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
繁花尽流年 2017-09-26
  • 打赏
  • 举报
回复
  if(trim($r_exp)){
        $keywords = "AND (concat(title,i.keywords,i.description,i.phone,i.linkman,i.qq,i.email,i.address) REGEXP '$r_exp') ";//INFO,标题,关键字,描述,电话,联系人,qq,邮箱,地址
        $keywords_a = "AND (concat(title,a.keywords,a.description,content) REGEXP '$r_exp')";//ARTICLE,标题,关键字,描述,内容
        $keywords_c = "AND (concat(comname,c.keywords,c.description,c.introduce,c.phone,c.linkman,c.qq,c.email,c.fax,c.address) REGEXP '$r_exp')";//COMPANY,商家名,关键字,描述,内容,电话,联系人,qq,邮箱,传真,地址
         
        $ord=" order by (title REGEXP '$r_exp2') desc,(title REGEXP '$r_exp') desc,(i.description REGEXP '$r_exp') desc,postdate desc,id desc ";//INFO_ORDER
        $ord_a=" order by (title REGEXP '$r_exp2') desc,(title REGEXP '$r_exp') desc,(content REGEXP '$r_exp') desc,addtime desc,id desc ";//ARTICLE_ORDER
        $ord_c=" order by (comname REGEXP '$r_exp2') desc,(comname REGEXP '$r_exp') desc,(keywords REGEXP '$r_exp') desc,postdate desc,id desc ";//COMPANY_ORDER
    }else{
        $ord_c=$ord=' order by postdate desc,id desc ';
        $ord_a=' order by addtime desc,id desc ';
把这段里的desc都换成asc
gw6328 2017-09-26
  • 打赏
  • 举报
回复
反正就是desc 和asc. 这么长的代码就不看了。 这两个标志就可以搞定你的需求哈。
二月十六 2017-09-26
  • 打赏
  • 举报
回复
把这页读取数据的sql打印出来,看一下order by的内容是什么,对其进行修改。
二月十六 2017-09-25
  • 打赏
  • 举报
回复
图没传上来吧?

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧