搜索框

<?php


/**
 * ECSHOP 搜索程序
 * ============================================================================
 * 版权所有 2005-2008 上海商派网络科技有限公司,并保留所有权利。
 * 网站地址: http://www.ecshop.com;
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用;不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * $Author: testyang $
 * $Id: article_search.php 15183 2008-11-17 09:01:24Z testyang $
*/


define('IN_ECS', true);


if (empty($_GET['encode']))
{
    $string = array_merge($_GET, $_POST);
    if (get_magic_quotes_gpc())
    {
        require(dirname(__FILE__) . '/includes/lib_base.php');
        //require(dirname(__FILE__) . '/includes/lib_common.php');


        $string = stripslashes_deep($string);
    }
    $string['search_encode_time'] = time();
    $string = str_replace('+', '%2b', base64_encode(serialize($string)));


    header("Location: article_search.php?encode=$string\n");


    exit;
}
else
{
    $string = base64_decode(trim($_GET['encode']));
    if ($string !== false)
    {
        $string = unserialize($string);
        if ($string !== false)
        {
            /* 用户在重定向的情况下当作一次访问 */
            if (!empty($string['search_encode_time']))
            {
                if (time() > $string['search_encode_time'] + 2)
                {
                    define('INGORE_VISIT_STATS', true);
                }
            }
            else
            {
                define('INGORE_VISIT_STATS', true);
            }
        }
        else
        {
            $string = array();
        }
    }
    else
    {
        $string = array();
    }
}


require(dirname(__FILE__) . '/includes/init.php');


$_REQUEST = array_merge($_REQUEST, addslashes_deep($string));
$_REQUEST['act'] = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : '';




/*------------------------------------------------------ */
//-- 搜索结果
/*------------------------------------------------------ */


$_REQUEST['article_keywords']   = !empty($_REQUEST['article_keywords'])   ? trim($_REQUEST['article_keywords'])     : '';
$_REQUEST['category']   = !empty($_REQUEST['article_category'])   ? intval($_REQUEST['article_category'])   : 0;


$action = '';
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'form')
{
/* 要显示高级搜索栏 */
$adv_value['art_key']  = htmlspecialchars(stripcslashes($_REQUEST['article_keywords']));
$adv_value['art_cat']  = $_REQUEST['article_category'];


/* 将提交数据重新赋值 */
/*处理文章属性*/
$smarty->assign('adv_val',             $adv_value);
$smarty->assign('action',              'form');

$action = 'form';
}

/* 初始化搜索条件 */
    $keywords  = '';
    $tag_where = '';
    if (!empty($_REQUEST['article_keywords']))
    {
        $arr = array();
        if (stristr($_REQUEST['article_keywords'], ' AND ') !== false)
        {
            /* 检查关键字中是否有AND,如果存在就是并 */
            $arr        = explode('AND', $_REQUEST['article_keywords']);
            $operator   = " AND ";
        }
        elseif (stristr($_REQUEST['article_keywords'], ' OR ') !== false)
        {
            /* 检查关键字中是否有OR,如果存在就是或 */
            $arr        = explode('OR', $_REQUEST['article_keywords']);
            $operator   = " OR ";
        }
        elseif (stristr($_REQUEST['article_keywords'], ' + ') !== false)
        {
            /* 检查关键字中是否有加号,如果存在就是并 */
            $arr        = explode('+', $_REQUEST['article_keywords']);
            $operator   = " AND ";
        }
        else
        {
            /* 检查关键字中是否有空格,如果存在就是或 */
            $arr        = explode(' ', $_REQUEST['article_keywords']);
            $operator   = " OR ";
        }


        $keywords = 'AND (';
        $article_ids = array();
        foreach ($arr AS $key => $val)
        {
            if ($key > 0 && $key < count($arr) && count($arr) > 1)
            {
                $keywords .= $operator;
            }


            $val        = mysql_like_quote(trim($val));
            $keywords  .= "(title LIKE '%$val%' OR content LIKE '%$val%')";


            $sql = 'SELECT DISTINCT article_id FROM ' . $ecs->table('article') . " WHERE title LIKE '%$val%' OR content LIKE '%$val%'";
            $res = $db->query($sql);
            while ($row = $db->FetchRow($res))
            {
                $article_ids[] = $row['article_id'];
            }


            $db->autoReplace($ecs->table('keywords'), array('date' => local_date('Y-m-d'),
                'searchengine' => 'ecshop', 'keyword' => $val, 'count' => 1), array('count' => 1));
        }
        $keywords .= ')';


        $article_ids = array_unique($article_ids);
        $tag_where = implode(',', $article_ids);
        if (!empty($tag_where))
        {
            $tag_where = 'OR article_id ' . db_create_in($tag_where);
        }
    }

$category   = !empty($_REQUEST['category']) ? intval($_REQUEST['category'])        : 0;
    $categories = ($category > 0)               ? ' AND ' . get_article_children($category)    : '';


$page       = !empty($_REQUEST['page'])  && intval($_REQUEST['page'])  > 0 ? intval($_REQUEST['page'])  : 1;
    $size       = !empty($_CFG['page_size']) && intval($_CFG['page_size']) > 0 ? intval($_CFG['page_size']) : 20;


//统计文章数量
    $sql   = "SELECT COUNT(*) FROM " .$ecs->table('article').
        "WHERE is_open = 1 AND article_type = 0 ".
        "AND ( 1 " . $categories . $keywords ." ) ";
    $count = $db->getOne($sql);
//①获得第几页
$page = isset($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page'])  : 1;
//②分页大小
$size = 30;
//③总的记录数,你可以用sql查询出来
$record_count = $GLOBALS['db']->getOne($sql);
//④生成分页
$pager = get_pager('article_search.php', array(), $record_count, $page,30);
//⑤赋值到模板
$smarty->assign('pager', $pager);
    $max_page = ($count> 0) ? ceil($count / $size) : 1;
    if ($page > $max_page)
    {
        $page = $max_page;
    }

    /* 查询文章 */
    $sql = "SELECT article_id,  cat_id, title FROM " .$ecs->table('article').
"WHERE is_open = 1 AND article_type = 0 ".
        "AND ( 1 " . $categories . $keywords ." ) ".
"ORDER BY article_id";;
    $res = $db->SelectLimit($sql, $size, ($page - 1) * $size);

//给文章的一些属性赋值
$arr = array();
    while ($row = $db->FetchRow($res))
    {
        $arr[$row['article_id']]['article_id']    = $row['article_id'];
        $arr[$row['article_id']]['title']         = $row['title'];
        $arr[$row['article_id']]['cat_id']        = $row['cat_id'];
        $arr[$row['article_id']]['url']           = build_uri('article', array('aid' => $row['article_id']), $row['title']);
    }


//if(count($arr) % 2 != 0)
//{
// $arr[] = array();
//}
assign_template();
//var_dump($keywords);
    $smarty->assign('search_article_list', $arr);                  //搜索的文章列表
    $smarty->assign('category',     $category);
$smarty->assign('keys',$val);
    $smarty->assign('keywords',   htmlspecialchars(stripslashes($_REQUEST['keywords'])));
    $smarty->assign('search_keywords',   stripslashes($_REQUEST['keywords']));


$smarty->assign('url_format',   $url_format);
$smarty->assign('pager', $pager);

assign_dynamic('article_search');
$position = assign_ur_here(0, $ur_here);

$smarty->assign('page_title',            $position['title']);    // 页面标题
$smarty->assign('ur_here',               $position['ur_here']);  // 当前位置
$smarty->assign('intromode',             $intromode);
$smarty->assign('helps',                 get_shop_help());      // 网店帮助
$smarty->assign('top_goods',             get_top10());           // 销售排行
$smarty->assign('navigator_list',        get_navigator($ctype, $catlist));  //自定义导航栏

$smarty->display('article_search.dwt');


/*------------------------------------------------------ */
//-- PRIVATE FUNCTION
/*------------------------------------------------------ */
/**
 *看搜索字符是否为空
 *
 * @access public
 * @param
 *
 * @return void
 */
function is_not_null($value)
{
    if (is_array($value))
    {
        return (!empty($value['from'])) || (!empty($value['to']));
    }
    else
    {
        return !empty($value);
    }
}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值