che ti rimanda alla pagina di inserimento è normale, perchè tu gli passi un $_SERVER['PHP_SELF']...

io ho solo utilizzato il parametro che tu avevi impostato nello script iniziale, poi dove deve andare lo decidi te! magari un apagina di errore e un link che riporta al form di inserimento

codice tuo
Codice PHP:
    // verifico la presenza dei campi obbligatori
    
if(!$titolo)
    {
        
$messaggio urlencode("Non hai inserito il titolo");
        
header('location: '.$_SERVER['PHP_SELF'].'?subpage=categoria-add&msg='.$messaggio);
        exit;
    } 
codice mio (hai scelto js)
Codice PHP:
// verifico la presenza dei campi obbligatori
    
if(!$titolo)
    {
        
$messaggio urlencode("Non hai inserito il titolo");
echo 
"<script>location.href=\"{$_SERVER['PHP_SELF']}?subpage=categoria-add&msg=$messaggio\";</script>";
        exit;
    }