Well, look at it from the perspective of if $task isn't "del". You'll end up with a blank table (just heading content), and an error in the while loop ( while ($row = mysql_fetch_array($dbQuery)) ) because $dbQuery doesn't exist. I'd move that if statement to the top, with a basic error message in an else for the "catch all". Also, I'd probably structure the table only to be build only if a result was returned.
<?php
if(isset($task) && $task == 'del') {
$usr = "";
$pwd = "";
$db = "";
$host = "";
$cid = mysql_connect($host,$usr,$pwd) OR die(mysql_error());
$SQL = " DELETE FROM links WHERE id = $id";
$dbQuery = mysql_db_query($db, $SQL, $cid);
if(mysql_num_rows($dbQuery) > 0) {
?>
<table width="800" border="1" cellpadding="1" cellspacing="0" bordercolor="#d7d7d7" bgcolor="#b7b7b7" class="body1">
<tr class="body1">
<td height="17" valign="top" bgcolor="6E7466" class="bodywhite10"><strong>Name</strong></td>
<td class="bodywhite10" valign="top" bgcolor="6E7466"><strong>Contact</strong></td>
<td class="bodywhite10" valign="top" bgcolor="6E7466"><strong> Convener</strong></td>
<td class="bodywhite10" valign="top" bgcolor="6E7466"><strong>Expertise</strong></td>
<td class="bodywhite10" valign="top" bgcolor="6E7466"><strong>Area of Strength</strong></td>
</tr>
<?php
while ($row = mysql_fetch_array($dbQuery)) {
?>
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['url']; ?></td>
<td><?php echo $row['contact']; ?></td>
<td><?php echo $row['category']; ?></td>
<td><?php echo $row['description']; ?></td>
</tr>
<?php
}
?>
</table>
<?php
}
else {
echo 'No rows returned from SQL query';
}
}
else {
echo 'Invalid task!';
}
?>
This really has nothing to do with your initial question, and Defender has you covered there, it's more just a question of your logic.
But beyond the structure, I'm also curious as to what you expect to display. This is a delete query, so it's not actually pulling any information...