搜索数据库多个单元格

时间:2015-10-12 08:51:24

标签: php sql arrays database

我的主页上有一个搜索栏,用户可以在其中输入信息,如果它与标签匹配,则会显示链接到该标签的服务(例如:搜索支持,它将显示指向IT支持页面的链接)< / p>

每个标记都存储在一个单独的单元格中的数据库中,该单元格具有链接到所选服务的唯一ID。这很有效,直到用户在同一个搜索栏中输入两个不返回结果的标签。

$action = (isset($_POST['action'])) ? $_POST['action'] : '';
$searchTerm = (isset($_POST['search_term'])) ? $_POST['search_term'] : '';

if($searchTerm != "" && $action == "service-search"){

$query = $modx->newQuery('Service');
$query->select($modx->getSelectColumns('Service','Service','',array('id', 'subject', 'link', 'target')));
$query->leftJoin('ServiceTag', 'ServiceTag', 'Service.id = ServiceTag.service_id');
$query->leftJoin('Tag', 'Tag', 'Tag.tag_id = Tag.id');
$query->where(array(
    array(
        'OR:Tag.tag:LIKE' => '%' .$searchTerm. '%'
    ),
    array(
        'AND:Tag.published:=' => 1,
        'AND:Tag.deleted:=' => 0,
        'AND:Service.published:=' => 1,
        'AND:Service.deleted:=' => 0
    )
));
$query->sortby('Service.subject','ASC');
$query->limit(10);

$suggestions = $modx->getCollection('Service', $query);

if(count($suggestions) > 0){
    foreach($suggestions as $suggestion) {

        $listItems[] = array(
        "label"=>$suggestion->get('subject'),
        "link"=>$suggestion->get('link'),
        "target"=>$suggestion->get('target')
        );
    }

}else{
    $listItems[] = array(
    "label"=>"no results found",
    "link"=>"/services",
    "target"=>""
    );      
}
return json_encode($listItems);

}

我有这个PHP块,我相信它是行

'OR:Tag.tag:LIKE' => '%' .$searchTerm. '%'

需要改变,处理多个$ searchTerms。我一直试图让这个工作在过去的几天没有运气!任何帮助都会很棒,谢谢。

2 个答案:

答案 0 :(得分:1)

如果$ searchTerm中有多个单词,则必须拆分它们并为每个单词添加一个LIKE语句。

假设$ searchTerm中有“foo bar”, 你检查:WHERE标签喜欢“%foo bar%”,但没有标签“foo bar”。

你必须检查:     WHERE(标签LIKE“%foo%”或标签LIKE“%bar%”)

答案 1 :(得分:0)

RightAnim = AnimationUtils.loadAnimation(Screen.this, R.anim.right_swipe);
ScreenAnimation.startAnimation(RightAnim );

一起
$searchTermSplit = $searchTerm;
$pieces = explode(" ", $searchTermSplit);
$wordOne = $pieces[0];
$wordTwo = $pieces[1];

这似乎运作良好,谢谢大家:)