The first thing you will need to do is copy the text in the query for the current WHERE clause. Next make use the set session value server behavior to set a session variable. For the trigger will need to make it based on both $_GET['id_category'] and $_GET['id_collection'] not being empty, it might look like this:
if( (isset($_GET['id_category']) && $_GET['id_category'] != "") || (isset($_GET['id_collection']) && $_GET['id_collection'] != "") ){
Give your variable a name that is meaningful, then for the value set it to the copied text of your WHERE clause. Next you will want to add in an else to the set session value like this:
if(!session_id()) session_start();
if( (isset($_GET['id_category']) && $_GET['id_category'] != "") || (isset($_GET['id_collection']) && $_GET['id_collection'] != "") ){
$_SESSION['your variable name'] = "your where clause text";
} else {
$_SESSION['your variable name'] = "";
}
The final part is to replace the where clause in the rs with this session variable like this:
"SELECT *
FROM product INNER JOIN category ON idcategory_product=id_category INNER JOIN collection ON idcollection_product=id_collection" . $_SESSION['your variable name'] .
"ORDER BY id_product DESC"
This should make it so you have no where clause if the values are not present. Please give this a try and post back with any questions that you have.