RE: Multiple work mySql database search.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Or even better :

<?
// ...
$string = "Hello World";
$Fields = Array("Table.Field1", "Table.Field2", "Table.Field3");
$Op = $Type=="All" ? "AND" : "OR";

for( $i=0; $i<count($Fields); $i++ )
{
 $Field = $Fields[$i];
 $Field = "CONCAT_WS('', ' ', TRIM($Field), ' ')";
 $where .= "\n". ($i==0 ? "WHERE " : " $Op ");
 $where .= "(";
 $where .= "$Field LIKE '% ".(preg_replace("/[\s]+/", " %' $Op $Field LIKE
'% ", $string))." %'";
 $where .= ")";
}
$sql = "SELECT ...";
$sql .= "\nFROM ...";
$sql .= $where;

// ...
?>


Try this :

$string = "Hello World";
$TableName = "Table";
$FieldName = "Field";
$Field = "CONCAT_WS('', ' ', TRIM($TableName.$FieldName), ' ')";

$Op = $Type=="All" ? "AND" : "OR";

$where = "WHERE ($Field LIKE '% ".(preg_replace("/[\s]+/", " %' $Op $Field
LIKE '% ", $string))." %')";

$sql = "SELECT * FROM Table ". $where;



----- Original Message ----- 
From: "Bruno Ferreira" <blueroom@xxxxxxxxxxxxxxxx>
To: <php-db@xxxxxxxxxxxxx>
Sent: Wednesday, April 21, 2004 3:46 PM
Subject: Re:  Multiple work mySql database search.


Martin E. Koss wrote:

>I have a product database which can be searched for a keyword in up to 3
>fields; using this select query:
>
>$sql_select = "SELECT * from productlist WHERE (Name LIKE
>'%$SearchText%') OR (Description LIKE '%$SearchText%') OR (Keywords LIKE
>'%$SearchText%') ORDER BY Name";
>
>What I really want to achieve is if someone enters more than one work in
>the search for, how can I get the select query to search for one, the
>other, or both?
>
>

    WHERE (field LIKE '%word1%' OR field LIKE '%word2%' [etc etc])

>
>I've thought of putting an option on the search for the user to select
>'All Words' or 'Any Word' so that the select query could deal with the
>search based on the full phrase they entered or any of the words.
>
>My problem is how to build the query.
>
>
>
    Join them either with ANDs or ORs like this:

    Searching for all words in a field:  WHERE (field LIKE '%something%
AND field LIKE '%other_thing')
    Searching for any of the words in a field: [read above in the
previous question]

    Bruno Ferreira
---
[This E-mail scanned for viruses by Declude Virus]

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux