проблема может быть с функцией очистки. Попробуйте использовать другой?
filter.php
< ? php
//Getting the cat_id value 25 from category.php
$cat_id = $_GET['cat'] + 0;
echo 'Cart id filter page is:'.$cat_id; //25
?>
<form action="search.php" method="post">
<input type="hidden" name="cat" value="<?=$cat_id;?>">
<input type="submit" value="search" class="btn btn-xs btn-primary">
</form>
search.php
< ?
$cat_id = $_POST['cat'] + 0;
echo 'Cart id search page is:'.$cat_id; // 25
?>
Если вы уверены, что вы получите только числа в $ _GET ['cat'] $ _POST ['cat], не имеет значения, положительное или отрицательное число, я хотел бы предложить вам использовать трюк PHP, например:
$ cat = $ _GET ['cat'] + 0;
но будьте внимательны, чтобы отключить все предупреждения в php.ini
Это более удобный трюк, он дает вам инициализацию переменной = 0, поэтому вы можете проверить это по типу:
if ($cat===0) echo 'Sorry, first select the category.';
или
if ($cat===0 and not isset($_GET['cat'])) ShowSelectCategorySidebar();
надеюсь, что это было полезно.