You are confusing client and server side code. Since the form isn't submitted every time the select list changes, you can't use server side code to hide and show elements like you are attempting.
You would have to use javascript to hide and show the elements.
So it would look something like:
<tr>
<td>
<p>Are you looking for one species or all species?
<select id="HowManySpecies" name="HowManySpecies" onchange="showSpeciesSelect()">
<option value="">One Species</option>
<option value="1">All Species</option>
</select>
</p>
</td>
</tr>
<tr>
<td>
<p id="whichSpecies" >
Which species? <select name="SpeciesSearch" class="BlackHeadline3" >
<option value="value">Select a Species</option>
<?php
while(!$rsSpecies->atEnd()) { //dyn select
?>
<option value="<?php echo($rsSpecies->getColumnVal("CommonName")); ?>"><?php echo($rsSpecies->getColumnVal("CommonName")); ?></option>
<?php
$rsSpecies->moveNext();
} //dyn select
$rsSpecies->moveFirst();
?>
</select>
</p>
</td>
</tr>
and then on the bottom of the page you add:
<script>
function showSpeciesSelect() {
var howManySelect = document.getElementById('HowManySpecies');
if (howManySelect.selectedIndex == 1) {
document.getElementById('whichSpecies').style.display='block';
} else {
document.getElementById('whichSpecies').style.display='none';
}
}
showSpeciesSelect();
</script>