It is not the same code in a different. The logic is quite different, correct where your's was not.
In your code you had -
$sql = "SELECT * FROM products WHERE $prod LIKE ('%".addslashes($search)."%') AND ";
if (isset($_REQUEST['productsCat'])) {
$sql .= " productsCat = '" . $_REQUEST['productsCat'] . "' ORDER BY productsTitle LIMIT $offset, $sqllimit";
}
if there is a value for $_REQUEST you add the second line of sql, and if not you don't. This is wrong as the ORDER BY and LIMIT clauses should be included in the query regardless of whether or not the user selected a value for "productsCat". Also if there is no value carried through for "productsCat" your query ends with "AND " which will cause MySQL to spit it out because of a syntax error.
I suggest you post your full code.