Con ajax si può!

Non so, mi sembrava uno slogan ad effetto.
Stampi tutto nell'index, e poi dove vuoi ti puoi creare un div (potresti impiccarti con i nodi html del dom se ti va) che riempi con un innerHTML generato dalla funzione ajax.
Vuoi due righe di codice?
mhhh
Codice PHP:
//varia roba dell'head
<script type="text/javascript">
<!--
function 
getData() {
if (
window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else { 
   
request = new ActiveXObject("Msxml2.XMLHTTP");
}
var 
message"";

var 
url"contatti.php";
if (
request) {
request.open("POST"url);
request.setRequestHeader("Content-Type""application/x-www-form-urlencoded; charset=UTF-8"); //o cmq il charset che usi
request.onreadystatechange =
function() {
if (
request.readyState == 4) {

document.getElementById("tabella").innerHTML request.responseText;

}
}
request.send(message);
}
else
{
alert("Il tuo browser obsoleto non supporta ajax.");
}
var 
tempo =  setTimeout("getData();",30000); //sono millisecondi, ed indicano la frequenza del refresh
}
//-->
</script>
<body onLoad="getData();">
//presentazione etc etc

<div id="tabella">
Caricamento in corso...
</div>
</body>
</html> 
Questo è un codice abbastanza semplice, che fa solo quello che deve.
Non sono sicuro che funzioni perchè avendolo scritto sul momento potrebbe presentare errori anche stupidi magari dovuti alla distrazione.
Debuggalo tu, e se vuoi piazzaci più controlli nella funzione js.
Lato server, ovviamente il file contatti.php dovrà limitarsi a restituire (con echo o con print) la tabella, con le sue righe e le sue celle.
Insomma quel codice che includi tu, però fatto tutto con echo o print.
Credo di esser stato chiaro, nel caso sempre disponibile per chiarimenti