Ciao a tutti. Stò costruendo per passione una struttura e-commerce in modo tale da affrantare quasi tutte le problematiche del web ... Allora ho questo problema:

Premessa:
- stò lavorando sulla parte amministrativa del sito;
- l'interfaccia è strutturata su tre colonne: menu pricipale, sezione, azioni
- non utilizzo frame ma solo table e div

Problema:
il contenuto centrale (sezioni) viene aggiornato inviando alla pagina index del lato amministrativo il paramentro page:
Codice PHP:
<? 
$p
="categorie"//pagina di default per i contenuti centrali
if(isset($_GET['page']))
    { 
//pagina passata via parametro
    
$p=$_GET['page'];
    if(
$p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists("pages/$p.php"))
        
$p="errore"//pagina di errore
    
}
    include(
"pages/$p.php");
?>
a sua volta le azioni vendono passate sempre all'index con il parametro subpage:
Codice PHP:
<? 
$p
="clear"//pagina di default per i contenuti centrali
if(isset($_GET['subpage']))
    { 
//pagina passata via parametro
    
$p=$_GET['subpage'];
    if(
$p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists("pages/subpages/$p.php"))
        
$p="errore"//pagina di errore
    
}
    include(
"pages/subpages/$p.php");
?>
fino a qui funziona tutto bene ma ho problemi a lavorare con i form. Ho creato una subpage "categoria-add.php" ed ho inserito il codice:

Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Aggiungi categoria</title>
<link href="../../template.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
   
if($_POST) {
    
inserisci_record();
}
else {
    
mostra_form();
}

function 
inserisci_record()
{
    
// richiamo il file di configurazione
    
require '../../includes/connect_configure.php';

    
// richiamo lo script responsabile della connessione a MySQL
    
require '../../includes/connect_db.php';

    
// recupero i campi di tipo "stringa"
    
$titolo     trim($_POST['titolo']);

    
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
    
if(get_magic_quotes_gpc())
    {
    
$titolo stripslashes($titolo);
    }

    
$titolo mysql_real_escape_string($titolo);

    
// recupero gli altri campi del form
    
$ordine      = isset($_POST['ordine']) ? intval($_POST['ordine']) : 0;

    
// 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;
    }

    
// preparo la query
    
$query "INSERT INTO categoria (cat_titolo, cat_ordine)
              VALUES ('
$titolo',$ordine)";

    
// invio la query
    
$result mysql_query($query);

    
// controllo l'esito
    
if (!$result) {
        die(
"Errore nella query $query: " mysql_error());
    }

    
// recupero l'id autoincrement generato da MySQL per il nuovorecord inserito
    
$id_inserito mysql_insert_id();

    
// chiudo la connessione a MySQL
    
mysql_close();

    
$messaggio urlencode("Inserimento effettuato con successo (ID=$id_inserito)");
    
header('location: '.$_SERVER['PHP_SELF'].'?subpage=categoria-add&msg='.$messaggio);
}

function 
mostra_form()
{
    
// mostro un eventuale messaggio
    
if(isset($_GET['msg']))
        echo 
'[b]'.htmlentities($_GET['msg']).'[/b]

'
;
    
?>
    <link href="../../template.css" rel="stylesheet" type="text/css">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="actions">
  <tr>
    <td scope="col"><h1>Nuova categoria</h1></td>
  </tr>
  <tr>
    <td><form id="form1" name="form1" method="post" action="pages/subpages/categoria-add.php">
      <label>
      
Titolo 

      <input type="text" name="titolo" id="titolo" />
        </label>
    
        <label>

        Ordine di visualizzazione 

        <input type="text" name="ordine" id="ordine" />
        

        

        <input type="submit" name="submit" id="submit" value="Conferma" />
        </label>
      
        

        <?php ?>
        

    </form>    </td>
  </tr>
</table>
<?php echo $_SERVER['PHP_SELF'].'?subpage=categoria-add&msg=' ?>
</body>
</html>
Quando eseguo lo script mi restituisce l'errore header
Codice PHP:
WarningCannot modify header information headers already sent by... 
però la query viene eseguita.

Qualche consiglio?