Sono perfettamente d'accordo con te.
Comunqe penso che il problema sia nella funzione datadump. Mi spiego. In una funzione per poter utilizzare variabili definite esternamente occorre usare la dicitura global $......

evidentemente c'è qualche problema con la connessione a mysql.

prova a fare così:

# Mi connetto al server MySQL e seleziono il DB
$connectio = @mysql_connect($db_host,$db_user,$db_pass);
@mysql_select_db($db_name) or die("Errore!");


# Creo la funzione datadump
function datadump ($table)
{
global $connection;

# Creo la variabile $result
$result = "# Dump of $table \n";
$result .= "# Dump DATE : " . date("d-M-Y") ."\n\n";

# Conto i campi presenti nella tabella
$query = mysql_query("select * from $table", $connection);
$num_fields = @mysql_num_fields($query);

...............
}