barecool Posted July 25, 2008 Share Posted July 25, 2008 I have a question how can i develop a search form that can pass the input value to a function to search a database of serial numbers that are in the following format. year model modelname beginningserial ending serial engine 1972 c283 test 283008880 283009990 whats 1982 c394 test2 394994449 395000000 what2 1999 c543 test3 34999 35980 where i want to search by either field and for the serial number function can search between the beginning serial and ending serial number to display the pertianing data like year model and model name, etc. i have the tables created i just cant figure out how to develop the search function and the echo to display the info i am pretty new at this... also the serial numbers vary in lenght and also include letters on some. any help appreciated it i very urgent Link to comment https://forums.phpfreaks.com/topic/116516-between-and-mysql-and-forms-search/ Share on other sites More sharing options...
ronnie88 Posted July 25, 2008 Share Posted July 25, 2008 <? ############################################################# # # -=[ MySQL Search Class ]=- # # version 1.5 # # (c) 2002 Stephen Bartholomew # # Functionality to search through a MySQL database, across # all columns, for multiple keywords # # Usage: # # Required: # $mysearch = new MysqlSearch; # $mysearch->setidentifier("MyPrimaryKey"); # $mysearch->settable("MyTable"); # $results_array = $mysearch->find($mysearchterms); # # Optional: # This will force the columns that are searched # $mysearch->setsearchcolumns("Name, Description"); # # Set the ORDER BY attribute for SQL query # $mysearch->setorderby("Name"); # ############################################################## class MysqlSearch { function find($keywords) { # Create a keywords array $keywords_array = explode(" ",$keywords); # Select data query if(!$this->searchcolumns) { $this->searchcolumns = "*"; $search_data_sql = "SELECT ".$this->searchcolumns." FROM ".$this->table; } else { $search_data_sql = "SELECT ".$this->entry_identifier.",".$this->searchcolumns." FROM ".$this->table; } # Run query, assigning ref $search_data_ref = mysql_query($search_data_sql); # Define $search_results_array, ready for population # with refined results $search_results_array = array(); if($search_data_ref) { while($all_data_array = mysql_fetch_array($search_data_ref)) { # Get an entry indentifier $my_ident = $all_data_array[$this->entry_identifier]; # Cycle each value in the product entry foreach($all_data_array as $entry_key=>$entry_value) { # Cycle each keyword in the keywords_array foreach($keywords_array as $keyword) { # If the keyword exists... if($keyword) { # Check if the entry_value contains the keyword if(stristr($entry_value,$keyword)) { # If it does, increment the keywords_found_[keyword] array value # This array can also be used for relevence results $keywords_found_array[$keyword]++; } } else { # This is a fix for when a user enters a keyword with a space # after it. The trailing space will cause a NULL value to # be entered into the array and will not be found. If there # is a NULL value, we increment the keywords_found value anyway. $keywords_found_array[$keyword]++; } unset($keyword); } # Now we compare the value of $keywords_found against # the number of elements in the keywords array. # If the values do not match, then the entry does not # contain all keywords so do not show it. if(sizeof($keywords_found_array) == sizeof($keywords_array)) { # If the entry contains the keywords, push the identifier onto an # results array, then break out of the loop. We're not searching for relevence, # only the existence of the keywords, therefore we no longer need to continue searching array_push($search_results_array,"$my_ident"); break; } } unset($keywords_found_array); unset($entry_key); unset($entry_value); } } $this->numresults = sizeof($search_results_array); # Return the results array return $search_results_array; } function setidentifier($entry_identifier) { # Set the db entry identifier # This is the column that the user wants returned in # their results array. Generally this should be the # primary key of the table. $this->entry_identifier = $entry_identifier; } function settable($table) { # Set which table we are searching $this->table = $table; } function setsearchcolumns($columns) { $this->searchcolumns = $columns; } } ?> Link to comment https://forums.phpfreaks.com/topic/116516-between-and-mysql-and-forms-search/#findComment-599112 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.