Query WHERE LIKE

Ev0luti0N

Registered
Искам да попитам дали има някакъв вариянт да търси дума по дума смисъл такъв, че в момента когато се въвдете web tourist търси в полето дали съдържа някаде web tourist, а може ли да търси дали съдържа една от тези две думи и да ми изкара намерените резултати :)
 
trevata каза:
Прегледай тази тема:
http://web-tourist.net/forum/viewtopic.php?t=88671&
Да, но представи си че човека е написал "_" или "-", а не " " кво правим тогава :) Друг начин ми трябва не може този да е единствения ;)
 
виж си ги преработи тея двете функции, name и content са ти полета къде да търси от таблицата

Код:
	function _search(){

		$key=trim($_GET['key']);
		#news res
		$_table="news";
		#line sql
		$search_name=explode_search($key,'name');
		$search_content=explode_search($key,'content');
		$search=array_merge($search_name,$search_content);
		if(sizeof($search)>1){
			$line_sql="((".implode("",$search_name).") OR (".implode("",$search_content)."))";
		}
		if(empty($line_sql)){
			$line_sql="1=1";	
		}
		#line sql
		$sql = "SELECT * FROM `".$this->_table."` where 
		((`name` like '%$key%' or  `content` like '$key') or $line_sql)
		ORDER BY `date` DESC, `id` DESC";

               $res = mysql_fetch_array($sql);

}

	function explode_search($key,$col='name'){
		$search=array();
		$key_arr=explode(" ",$key);
		for($k=0;$k<sizeof($key_arr);$k++){
			if($key_arr[$k]!='' && strlen($key_arr[$k])>2){
				if($k>0){
					$search[]=" and ($col like '%".$key_arr[$k]."%')";
				}else{
					$search[]=" ($col like '".$key_arr[$k]."')";	
				}
			}
		}
		return $search;
	}
 

Back
Горе