PHP dynamical conditional post display

Your code is disjointed, but from the look of it you are passing an ID as the category_name value. The switch that would convert that to a name comes after the query.

Move this, or something like it,…

$link=$_GET['link'];
if ($link == '1'){
    $category_name="accomodatins";
}
if ($link == '2'){
   cat_switcher();
}
if ($link == '3'){
    cat_switcher();
}
if ($link == '4'){
    cat_switcher();
}

… up so that it is before the query and thus converts $link which is a number to a name.

Also, don’t use query_posts. Create a new WP_Query object or use a filter on pre_get_posts

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)