instead of simply executing mysql_query("...");
use mysql_query("...") or die( mysql_error() );
. This way you will get details about the error.
As for your ACTUAL problem, I am seeing field named "by", which is a keyword. To avoid this "beginner's mistake" (no offense), ALWAYS enclose the db name, table and field names in backticks:
mysql_query("INSERT INTO `markyourcard` (`date`, `link`, `by`, `time1`, `tip1`, `time2`, `tip2`, `time3`, `tip3`, `time4`, `tip4`, `time5`, `tip5`, `time6`, `tip6`, `time7`, `tip7`, `time8`, `tip8`)
VALUES ('$date', '$link', '$by','$time1','$tip1','$time2','$tip2','$time3','$tip3','$time4','$tip4','$time5','$tip5','$time6','$tip6','$time7','$tip7','$time8','$tip8')") or die(mysql_error());
Lastly, to avoid "SQL injection" (if you don't know what that is, search it - there are tons of articles out there on the subject), instead of these:
$date = $_POST['date'];
$link = $_POST['link'];
...
use these:
$date = mysql_real_escape_string($_POST['date']);
$link = mysql_real_escape_string($_POST['link']);
...