El problema no debes resolverlo por "evitar recargar la página" .. sino en redireccionar a otra página cuando termines el proceso con tu BD.
Es decir .. NO mostrar los típicos mensajes de error/exito o el própio "listado" de esos registros en el mismo flujo de código que ha realizado tu INSERT/UPDATE a tu BD.
Debes redireccionar .. ejemplo:
Código PHP:
<?
// proceso php
header ("Location: pagina.tal");
?>
NO es necesario que el proceso php y el código de tu formulario/listado de esos registros o demás acciones estén en scripts por separado .. pero si están en uno mismo tendrás que usar variabels de control para determinar en que proceso estás y así redireccionar con ese parámetro en el URL que va indicar que se va hacer despues de tu proceso.
ejemplo
Código PHP:
<?
if ($_GET['accion'] == "listar"){
// tu código del listado o formulario ..
} else {
// el formulario ...
}
if (isset($_POST['submit'])){
// proceso
header ("Location: $_SERVER['PHP_SELF']."?accion=listado");
exit;
}
?>
es un ejemplo a la rápida .. se controlaría mejor todo bajo un switch() para las "acciones" .. pero lo más importante de todo esto es ver a los procesos PHP como scripts independientes que se "pide" su ejecución y al terminar "redireccionan" al cliente (navegador en tu caso) a otro script o página o sitio en general .. Por el "camino" al redireccionar así se pierden todas las variabels que viajasen en las cabeceras HTTP y por ende no habrá mas peticioes de enviar denuevo las variabels o que se tomen las anteriores.
Un saludo,