turpentyne Posted November 20, 2011 Share Posted November 20, 2011 This may sound like an odd thought, but us beginners come up with weird ideas sometimes. I'm trying to solve a "three letters or less" search. Basically if the user enters 4 words or more, my script does a fulltext search. If they do 3 letters or less, it does a basic search. But how can I write the script so that it only searches for those matching letters that have either a space in front or at the end... or that start with the three letters searched. so, if they type in "elm" I want to get "chinese elm" I want to get "Elmendorf's onion" I don't want to get "engelman's spruce"... or at the very least have results with no space on either side be at the end of the results? right now, I'm just doing a basic search and a basic search that concatenates two fields: $data = mysql_query("SELECT * FROM plantae WHERE common_name_english LIKE '%$item%'"); $data = mysql_query("SELECT * FROM plantae WHERE CONCAT(taxonomic_genus,' ',scientific_name) LIKE '%$item%'"); Quote Link to comment https://forums.phpfreaks.com/topic/251487-controlling-search-variable/ Share on other sites More sharing options...
QuickOldCar Posted November 20, 2011 Share Posted November 20, 2011 Using fulltext search is a better option. http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html I could see doing something like this. $data = mysql_query("SELECT * FROM plantae WHERE common_name_english LIKE '$item' AND common_name_english LIKE '% $item' AND common_name_english LIKE '$item %'"); I did this simple function to only display results as you stated. <?php $search_term = "elm"; $results = array("elm","chinese elm","Elmendorf's onion","engelman's spruce","Elm tree"); function excludeWithin($search_term,$words){ $search_term =strtolower(trim($search_term)); $words =strtolower(trim($words)); if($search_term == $words || preg_match("/ $search_term/",$words) || preg_match("/$search_term /",$words)){ return $words; } } foreach($results as $result){ if(excludeWithin($search_term,$result) != ""){ echo $result."<br />"; } } ?> Results would be: elm chinese elm Elm tree Quote Link to comment https://forums.phpfreaks.com/topic/251487-controlling-search-variable/#findComment-1289790 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.