2016-10-13 3 views
-1

Я хотел бы знать, есть ли способ фильтровать результаты по ключевым словам, чтобы результаты отображались только в том случае, если они подходят до 2 ключевых слов?Фильтр по ключевым словам через PDO PHP

Вскоре ... Я хотел бы сделать «ВАМ МОЖЕТ БЫТЬ ИНТЕРЕСНО» с помощью ключевых слов ($ row ['TAG']) ... Единственное условие, что все ключевые слова похожи или разница до 2 слова. TIA.

$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u, 
notebook, laptop, mac, **- 10 keyword** 

В $ words_tag (2) = яблоко, воздух, Macbook, 16GHz, i5250u, ноутбук, ноутбук, Mac, -8/10 ключевые слова

В $ words_tag (3) = mjvm2ll, воздух, Macbook, 16GHz, i5250u, ноутбук, ноутбук, Mac, -8/10 ключевых слов

X $ words_tag (4) = mjvm2ll, воздух, 16GHz, i5250u, ноутбук, ноутбук, макинтош, -7/10 ключевые слова

Мой код:

$words_tag=$row['TAG']; 
$arr = substr_count($words_tag, ","); 

    //$words_tag=apple, 11128gb, mjvm2ll, air, macbook, 16ghz, i5250u, notebook, laptop, mac, 

    $search = $words_tag; 
    $search = strtoupper($search); 
    $search = strip_tags($search); 
    $search = trim($search); 
    $words = explode(',', $search); 
    $words_condition = array(); 
    $arguments = array(); 
    $i='1'; 
    foreach ($words as $word) { 
     $words_condition[] = 'TAG LIKE ?'; 
     $arguments[] = '%'.$word.'%'; 
     $i++; 
     if($i=> $arr-2) break(); 
    } 

    $query = $db->prepare("SELECT * FROM `post` WHERE ".implode(" OR ", $words_condition)." ORDER BY ID DESC"); 

    $query->execute($arguments); 

    if($query->rowCount()=='0'){ 

    }else{ 
    echo 'YOU MAY BE INTSETENTING...'; 
    } 
+0

Извините, я не понимаю, что вы после. Pls предоставляет некоторые выборочные данные, ожидаемые результаты на основе выборочных данных и фактические результаты, полученные по вашему запросу. – Shadow

+0

@barmar Этот код настолько сбит с толку, что забился с барахлом, как 'strip_tags', я его честно не видел. По сравнению с строкой ''0''? Этот код нуждается в некоторой любви. – tadman

+0

hi @shadow ... как вы можете видеть, я хотел бы сделать «ВЫ МОЖЕТЕ БЫТЬ ИНТЕРЕСНЫМИ», используя ключевые слова ($ row ['TAG']) ... Единственное условие, что все ключевые слова похожи или различия до 2 слов – TheQuestionerMan

ответ

2

Вместо использования OR, чтобы объединить условия LIKE, используйте +. Условие равно 1, когда есть совпадение, или 0, когда он не совпадает, поэтому общее количество ключевых слов будет соответствовать. Затем вы можете сравнить это с вашим лимитом по количеству совпадающих ключевых слов.

$query = $db->prepare("SELECT * FROM `post` 
    WHERE ".implode(" + ", $words_condition)." BETWEEN 1 AND 2 
    ORDER BY ID DESC"); 
Смежные вопросы