View Single Post
  #87  
Old 12-18-2004, 12:18 PM
 
guphed guphed is offline
 

Newbie
  
Join Date: Jun 2004
Location: Newton-le-Willows, UK
Posts: 4
 

Default

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;
__________________
Local Test: X-Cart Gold 4.0.7; Windows XP; IIS 5.1; PHP 4.3.7; MySQL 4.0.20a
Remote Test: X-Cart Gold 4.0.7; Linux; Apache 1.3.27; PHP 4.1.2; MySQL 3.23.54
Reply With Quote