Proč tam máš tento řádek?
echo "<input type='hidden' name='cat' value='".$_POST['cat']."'>";
Já bych jej zkusil vyhodit a teprve po odeslání formuláře si do proměnné přiřadit vybraný test:
$cat = $_POST['cat'];
Proč tam máš tento řádek?
echo "<input type='hidden' name='cat' value='".$_POST['cat']."'>";
$cat = $_POST['cat'];