I hope I understood your questions
<input type="checkbox" name="directory_disable" checked onClick="location.href='user-edit.php?id=<?=$id?>'";/>
What you have happening here is when they click the checkbox the user is redirected to another page. And the only value being sent is the "id". The next page can not tell if the user is checking or unchecking the box.
If you need the "user-edit.php" page to be able to tell if the box is being checked or unchecked you need to add the another GET value to the url
<input type="checkbox" name="directory_disable" checked onClick="location.href='user-edit.php?id=<?=$id?>&disable=yes' />
Now I should note that doing a redirect is bit unusual. Usually you would assign a "value" to the <input> and then have javascript submit the form onclick.
Should also note there appears to be an extra ;" at the end of one of the input fields and the other has an extra " at the end of it.
On your next problem your code is doing exactly as you told it to. And you are telling it to no matter what display the table row whether it is empty or not.
Basically your code say if $directory_disable == 'N' do this
<tr>
<td width="6%" align="center" >•</td>
<td width="94%" class="left_menu">
<a class="leftmenu" href="<?=$SITE_PATH?>user-directory.php">Church Directory</a>
</td>
</tr>
else do this
<tr>
<td width="6%" align="center" >•</td>
<td width="94%" class="left_menu">
</td>
</tr>
It doesn't matter whether the link is visible or not the HTML is still creating another table row and 2 table cells, one with the "•" and the other is blank.
So if that link is not to be displayed you need to also not display the table row either.