Poniższa funkcja to wyszukiwarka produktów. Jeśli wpiszemy dłuższą frazę. Np "Renault Clio", zwróci produkty, które w nazwie mają "Renalut" lub "Clio", tymczasem chciałby aby zwracała jako wynik, tylko te produkty,w których opisie jest zarówno "Reanlut" oraz "Clio". Wyczytałem w manualu, ze to kwestia +, ale niestety nie działa.
function searchProd($Page = 1,$Strings = null,$UrlString = null,$Caturl = null,$CatID = null){ $PerPage = PROD_PER_PAGE; if($Page > 1)$Offset = ($Page - 1)*$PerPage; else $Offset = 0; if ($Strings) { foreach ($StrArr as $key=>$Word) { //$Word = preg_replace('/[^a-zA-Z0-9]/', '', $Word); $MatchTitleExpr.= " $Word* "; } } } if ($UrlString) { foreach ($StrArr as $key=>$Word) { } } } if($CatID !== null) { $WhereCat = ' AND pc.categories_id = ' . $CatID; } $this->StrArr = $StrArr; $this->SelectSQL = "SELECT p.*, p.$this->PriceColumn as price, m.manufacturename, MATCH(pd.all) AGAINST('{$MatchExpr}' IN BOOLEAN MODE) AS allrelevance, MATCH(pd.name) AGAINST('{$MatchTitleExpr}' IN BOOLEAN MODE) AS namerelevance FROM products p RIGHT JOIN products_details pd ON (p.productid=pd.prodid) LEFT JOIN manufactures m ON (m.manufactureid=p.manufacturer) LEFT JOIN products_categories pc ON (pc.products_id = p.productid) WHERE (MATCH(pd.all) AGAINST ('$MatchExpr' IN BOOLEAN MODE)) $WhereCat GROUP BY productid "; if ($Page == 1) $this->RelevantCategsSQL = "SELECT DISTINCT `products_categories`.`categories_id` FROM `products_details` INNER JOIN `products_categories` ON `products_details`.`prodid` = `products_categories`.`products_id` WHERE MATCH(`products_details`.`all`) AGAINST('$MatchExpr' IN BOOLEAN MODE) $WhereCat "; $this->SelectSQL.= "ORDER BY namerelevance DESC,allrelevance DESC, p.name ASC LIMIT $Offset, $PerPage"; if ($Caturl || $CatID) $this->CountSQL = "SELECT COUNT(*) AS `TotalProducts` FROM `products_details` LEFT JOIN products_categories pc ON (pc.products_id = `products_details`.prodid) WHERE (MATCH(`all`) AGAINST('$MatchExpr' IN BOOLEAN MODE)) $WhereCat GROUP BY prodid "; else $this->CountSQL = "SELECT COUNT(*) AS `TotalProducts` FROM `products_details` WHERE (MATCH(`all`) AGAINST('$MatchExpr' IN BOOLEAN MODE)) GROUP BY prodid "; $DB->Query($this->SelectSQL,'searchProd'); while ($row = $DB->Fetch('searchProd')) { $this->Products[$row['productid']] = $row; $this->Products[$row['productid']]['count'] = ++$Offset; } //Update the value '+' => ' ' ))); if ($CatID) $sql = "INSERT INTO `searches` (`phrase`,`times`,`cat`) VALUES ('$Words','1','$CatID') ON DUPLICATE KEY UPDATE `times`=`times`+1"; else $sql = "INSERT INTO `searches` (`phrase`,`times`) VALUES ('$Words','1') ON DUPLICATE KEY UPDATE `times`=`times`+1"; $DB->Query($sql,'InsertSearcherString'); } return $this->Products; }