Yeah my data are from a database. How do I use query to search something like that?
well like in my code, suppose you want to look in table 'tablename' in field 'textfield', and you want to show the fields 'title' and 'textfield', and you need the 'ID' too, Then you go
$query='SELECT title,textfield,ID FROM tablename WHERE textfield LIKE "%word1%"'
for more than one word, need to match all:
$query='SELECT title,textfield,ID FROM tablename WHERE textfield LIKE "%word1%" AND textfield LIKE "%word2%"'
to match one of both words: $query='SELECT title,textfield,ID FROM tablename WHERE textfield LIKE "%word1%" OR textfield LIKE "%word2%"'
-----Original Message----- From: Chris Hayes [mailto:[EMAIL PROTECTED] Sent: Thursday, March 13, 2003 4:02 PM To: [EMAIL PROTECTED] Subject: Re: [PHP] Search/Regular Expression problem
At 21:48 13-3-2003, you wrote: >My search enginue will bring up a result IF and only if ALL of the words in >$search exist in the result. For example >if > >$search = Vax Useful Commands > >Then the result is only true if (eregi(".*Vax.*Useful.*Commands.*", >'possible result')) is true Are your data in a database? In that case it is much faster to use a query to check whether the words are in some record. Regular expressions can take quite some time!
>Now, I don't know how many words there are in $search initially. How do I >do a search like that? I mean if I know $search is 3 words then I can do > >$words = preg_split("/ /", $search); I like the 'explode()' function very much , which splits a string on a separator (can be ' ') and puts the results in a long array.
>if (eregi(".*words[0].*words[1].*words[2].*", 'possible result')) { > ..... >} > > >Even if I know how many words there are, everytime the number of words in >$search can be different. So if you have used explode() then you can do a loop that goes through the array, for instance
$searchwords=explode(' ', $search);
for ($x=0;$x<count($searchwords);$x++) {//build the search command OR build the query // i recommend to make it a query, so:
$WHERE.= ' AND textfield=LIKE '"%'.$searchwords[$x].'%"';
}
//now cut off the first ' AND ' $WHERE=substr($WHERE,4,strlen($WHERE);
now finish the query $query="SELECT title,text,ID FROM tablename ".$WHERE;
then proceed by doing the query and showing the results.
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php