I think there is quite a lot wrong with this.
- if ("$row_events['id'];" != "") {
This will always equate to true. try
if ($row_events['id'] != "") {
- echo ("<td width=\"20%\"><?php echo $row_events['date']; ?></td>
You are already in script so the <php .. ?> are not needed, try:
echo "<td width=\"20%\">".$row_events['date']."</td>
You have a similar problem later with your link.
Some people prefer to echo all html like you. I prefer the other way, which is to come out of script and only echo for dynamic bits. It helps with all the quotes and escaping.
try
<? if ($row_events['id'] != "") { ?>
<td width="20%">
<?php echo $row_events['date']; ?>
</td>
<td width="80%">
<a href="viewevent.php?id=<?php echo $row_events['id']; ?>">
<?php echo $row_events['title']; ?>
</a>
</td>
<?php } else { ?>
<th colspan="2" scope="col">No Events</th>
<?php } ?>
Note the use of {} in a if statement even if there is only one statement. This helps make sure you balance up all your brackets.