Dipende da come funziona il form. Se fa un submit su se stesso, puoi usare una variabile (il nome del pulsante di invio) per scrivere una funzione nel body.
codice:
CODICE DELLA POPUP:
<?php
$body = ($_POST[invio]=='Invia')? '<body onload="setTimeout(\'aggiorna()\',1500);">' : '<body>';
unset($_POST[invio]);
?>
<html>
<head>
<title>...</title>
<script type="text/javascript">
<!--
function aggiorna() {
window.opener.location.reload(); /* Aggiorna la finestra che ha aperto la popup */
window.close(); /* Chiude se stessa */
}
-->
</script>
</head>
<?php echo $body; ?>
<form action="..." method="post">
<input type="submit" name="invio" value="Invia">
</form>
Ho usato il metodo setTimeout() per ritardare di 1 secondo e mezzo (1500 millisecondi) il lancio della funzione, perché a volte può succedere che l'invio dei dati ci metta qualche millesimo di secondo di troppo...quindi se la finestra si chiudesse prima di aver inviato tutti i dati, il browser andrebbe in loop (e penso che anche al database non farebbe bene...). Non ho provato il codice, ma dovrebbe funzionare.