View Single Post
  #89  
Old 12-18-2004, 01:16 PM
 
chilll33 chilll33 is offline
 

Senior Member
  
Join Date: Oct 2003
Location: Miami, FL
Posts: 100
 

Default

Quote:
Originally Posted by guphed
Well I think this thread started out by being a mod for changing the exact phrase search to multiple word search before it deviated somewhat before anybody had posted any code for v4.x so I've had to have a pop myself...

This seems to work for me, although I don't use Extra Fields so I've not tested it with that... I'm on 4.0.7.

Change:

Code:
# Search for substring in some fields... if (!empty($data["by_title"])) $condition[] = "$sql_tbl[products].product LIKE '%".$data["substring"]."%'"; if (!empty($data["by_shortdescr"])) $condition[] = "$sql_tbl[products].descr LIKE '%".$data["substring"]."%'"; if (!empty($data["by_fulldescr"])) $condition[] = "$sql_tbl[products].fulldescr LIKE '%".$data["substring"]."%'"; if (!empty($data["extra_fields"]) && $active_modules['Extra_Fields']) { foreach($data["extra_fields"] as $k => $v) $condition[] = "($sql_tbl[extra_field_values].value LIKE '%".$data["substring"]."%' AND $sql_tbl[extra_fields].fieldid = '$k')"; $join['extra_field_values'] = "$sql_tbl[products].productid = $sql_tbl[extra_field_values].productid"; $join['extra_fields'] = "$sql_tbl[extra_field_values].fieldid = $sql_tbl[extra_fields].fieldid AND $sql_tbl[extra_fields].active = 'Y'"; } if (!empty($condition)) $search_condition .= " AND (".implode(" OR ", $condition).")";

To:

Code:
$ss = split(" ",$data["substring"]); $ss_condition = ""; foreach($ss as $s) { # Search for substring in some fields... $condition = array(); if (!empty($data["by_title"])) $condition[] = "$sql_tbl[products].product LIKE '%".$s."%'"; if (!empty($data["by_shortdescr"])) $condition[] = "$sql_tbl[products].descr LIKE '%".$s."%'"; if (!empty($data["by_fulldescr"])) $condition[] = "$sql_tbl[products].fulldescr LIKE '%".$s."%'"; if (!empty($data["extra_fields"]) && $active_modules['Extra_Fields']) { foreach($data["extra_fields"] as $k => $v) $condition[] = "($sql_tbl[extra_field_values].value LIKE '%".$s."%' AND $sql_tbl[extra_fields].fieldid = '$k')"; $join['extra_field_values'] = "$sql_tbl[products].productid = $sql_tbl[extra_field_values].productid"; $join['extra_fields'] = "$sql_tbl[extra_field_values].fieldid = $sql_tbl[extra_fields].fieldid AND $sql_tbl[extra_fields].active = 'Y'"; } if (!empty($condition)) $ss_condition .= " AND (".implode(" OR ", $condition).")"; } $search_condition .= $ss_condition;


Works great with 4.0.8
__________________
Core version:
5.3.2.7

PHP:
5.6.29
MySQL server:
5.5.5-10.0.27-MariaDB-cll-lveĀ  (InnoDB engine support enabled)
Web server:
Apache
Operating system:
Linux
XML parser:
found
GDLib:
found (0)
Translation driver:
Database
Curl version:
7.29.0
Reply With Quote