Ok... asumo que estas sacando el ultimo registro de la base de datos para poder agregar el nuevo y que cada vez que agregas uno, se agrega la fecha.
Código PHP:
$host = 'localhost';
$usuario = 'root';
$password = '';
$base = 'mensajes';
$conexion = mysql_connect($host, $usuario, $password) or die("Error en la conexion");
$base = mysql_select_db($base) or die("La base de datos no existe!");
if($_POST['enviar']){
$sql = "SELECT idmensajes as M
FROM mensajes
ORDER BY fecha DESC
LIMIT 1";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res)){
if ($row['M'] > 0){
$max = $row['M'] +1;
}else{
$max=1;
}
}
$fecha = date("Y-m-d");
$sql = "INSERT INTO mensajes (idmensajes, nombre, email, telefono, destino, comentario, fecha)
VALUES ($max, '".$_POST['nombre']."', '".$_POST['email']."' , '".$_POST['telefono']."', '".$_POST['destino']."', '".$_POST['comentario']."', '$fecha')";
$res = mysql_query($sql);
header ("Location: gracias.htm");
}else{
header("Location: error.htm");
}
El problema tuyo parece estar en el insert, ya que al poner $_POST[campo] entre comillas simples funcionara distinto que poner $fecha entre comillas simples, porque $fecha es una variable y $_POST[campo] es un arreglo.
Testea con esto y nos comentas.
Suerte!