What sort of error message are you getting? Is it simply a parse error, or is it more than that?
if (($post) && ($linkid) && ($linkname) && ($linkdesc)) {
Do all these variables exist?
Also, you might do well to change
echo "<form action=\"addlink.php";
if ($board) {echo "?board=$board"; }
if ($topic) {echo "&topic=$topic"; }
--To--
echo '<form action="addlink.php" method="POST">';
if ($board) echo "<input type='hidden' name='board' value=\"$board\">";
if ($topic) echo "<input type='hidden' name='topic' value=\"$topic\">";
Because as far as memory serves me I think the values will be overridden with only the true ones, not the ones you add on to the and of the form (although I may be wrong).
It would be better if we knew what sort of errors you were getting though.
Edit:
Also, I see no calls to connect to the server and select the database, nor to close the connection. I trust you have those though. And may I suggest changing from using (\") to (') to make it easier for yourself and others to read? Its fine when in an editor that uses different colours, but here on the board as black text it can be a bit of a pain.
Edit #2:
Also, you have an extra comma/apostrophe at the end of your query, which may result in an error.
$sql="INSERT INTO link (linkid,linkname,linkdesc) VALUES ('".htmlentities($linkid)."','".nl2br($linkname)."','$linkdesc'[b][COLOR=blue],'[/COLOR][/b])";
~ Paul