This is incorrect as well. That should be:
PHP Code:
<?php if ($field_country == 1) { ?>
Without the closing ) there. 1 and "1" are considered the same values with the equality check.
Just a heads up though, this of course will not change what is actually shown upon selection. You need to use JS for that. As you have it right now, it will show a selected "United States", followed by a field for the "Outside USA" option. It would be better to split them up to force one, then force another. Can't do a whole lot code wise since we don't know what your form's are doing, but you'd need to self post it back to get that data.
PHP Code:
<dt>Country</dt>
<dd>
<select class="select" id="field_country" name="country">
<option value="1" selected="selected">United States</option>
<option value="2">Canada</option><option value="3">Afghanistan</option>
</select>
</dd>
<dt>State</dt>
<dd>
<select class="select" id="field_state" name="state">
<?php
if (!isset($_POST['field_country']) || isset($_POST['field_country']) && $_POST['field_country'] == 1)
{
?>
<option value="1">Alabama</option>
<option value="2">Alaska</option>
<option value="3">Arizona</option>
<option value="5" selected="selected">California</option>
<?php
}
else
{
print '<option value="6" selected="selected">Outside USA</option>';
}
?>
</select>
</dd>
Like that. That way on first load it will assume no post has been send back to indicate the first options, then the second will take the !isset check and give the states. It can be much better written though, PHP wise you may be better off never presenting the options until its been selected, then walk the form through. AJAX wise it can be done on the fly.