Bien, ahora es problema del ambito de las variables. No se puede acceder desde fuera de una funcion a una variable creada dentro de una funcion; y tampoco se puede acceder directamente a una variable creada fuera de una funcion desde dentro de una funcion. Es decir, el $error definido dentro de tu funcion no es accesible desde el codigo que muestra el formulario.
Tienes mas info en
http://www.php.net/manual/en/languag...bles.scope.php
La solucion aqui seria no usar la funcion Validar() en el if, sino usar comprobar_email() y poner un else a ese if que asignara el valor a la variable $error. Algo como:
Código PHP:
$ok=true;
$error='';
if (isset($_POST['Submit']) && $ok=comprobar_email($_POST['email'])){
// build the form action
$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'] . (isset($HTTP_SERVER_VARS['QUERY_STRING']) ? "?" . $HTTP_SERVER_VARS['QUERY_STRING'] : "");
if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO formulario (apellido, email) VALUES (%s, %s)",
GetSQLValueString($HTTP_POST_VARS['nombre'], "text"),
GetSQLValueString($HTTP_POST_VARS['email'], "text"));
$Result1 = $db2->Execute($insertSQL) or die($db2->ErrorMsg());
}
} else {
if (!$ok) $error=$error="El email ".$_POST['email']." es incorrecto";
}
Suerte.