Prova a mandare in echo le variabili e vedere quale delle tante ritorna.

Codice PHP:
if (isSet($ordina_ricerca)) {
    echo 
"1° Controllo OK
"
;
}
if (!empty(
$ordina_ricerca)) {
    echo 
"2° Controllo OK
"
;
}
if (isSet(
$ordina_ascdesc)) {
    echo 
"3° Controllo OK
"
;
}
if (!empty(
$ordina_ascdesc)){
    echo 
"4° Controllo OK
"
;
}

exit;
/*
Piazza questo codice prima del tuo script
e vedi quale dei tanti da un risultato.
Visto che il tuo if è composto di OR, vuol dire 
che almeno uno dei controlli è TRUE
*/ 
Male che ti va, prova ad invertire l'IF nel seguente modo.
Codice PHP:
if (!isset($ordina_ricerca) || empty($ordina_ricerca) || !isset($ordina_ascdesc) || empty($ordina_ascdesc)){            
            
$query "SELECT * FROM #__autoexp_add WHERE published = '1'";   

        }else{
   switch (
$ordina_ricerca) {
      case 
1:    
         
$query ="SELECT * FROM #__autoexp_mark INNER JOIN #__autoexp_add ON #__autoexp_add.mark_id=#__autoexp_mark.id WHERE #__autoexp_add.published = '1' ";
                break; 
              }
        }