Tus if ($_GET[...]) generan un error si no existe ese indice en el array. Es mejor usar isset o empty.
Puedes generalizarlo con un array:
Código PHP:
$_params=array('catid','or');
$_query=array();
foreach ($_params as $_param) {
if (!empty($_GET[$_param])) {
$_query[]="{$_param}={$_GET[$_param]}";
}
}
$link.=implode('&',$_query);
Asi si tienes que añadir nuevos parametros solo tienes que añadirlos a $_params.