I found the problem while I was copying the code over. The problem is that the if triggers in loop one, and the elseif triggers in loop two. In other words, it does exactly what it's supposed to, I just didn't think through what the loop would accomplish. Now to figure out how to make it do what I meant it to do. For the benefit of people who screwed up the same way I did: while($i < count($col_vals)) { # Start populating drop box $temp_column = $val['column']; echo '<option value="' . $col_vals[$i][$val['column']] . '"'; if($col_vals[$i][$val['column']] == $search_result[0][$col]) { echo ' selected="selected"'; } elseif($val['default'] == $col_vals[$i][$val['column']]) { echo ' selected="selected"'; } echo '>' . $col_vals[$i][$val['column']] . '</option>' . "\n"; $i++; } # End populating drop box And here's the output: <option value="vlan1201" selected="selected">vlan1201</option> <option value="none" selected="selected">none</option> <option value="vlan1288">vlan1288</option> While generating line one of the output: $col_vals[$i][$val['column']] = 'vlan1201' $search_result[0][$col] = 'vlan1201' $val['default'] = 'none' Naturally, in round one, it's selected -- that's the if statement. In round two, it's also selected -- that's the elseif statement. In round three, neither applies. To fix it, I changed the elseif to be as follows: elseif(($val['default'] == $col_vals[$i][$val['column']]) && (!isset($search_result[0][$col]))) Now the elseif only triggers if there is a default, but there is no value in the DB for that field. Hope my failure to think saves someone else some trouble later! -Alex On Fri, Sep 24, 2010 at 1:56 PM, chris h <chris404@xxxxxxxxx> wrote: > Andy I see no reason why both echo's would fire; unless this block of code > gets executed multiple times. can we see more of the code? > > Chris H. > > > On Fri, Sep 24, 2010 at 1:50 PM, Andy McKenzie <amckenzie4@xxxxxxxxx> wrote: >> >> Hey folks, >> >> Here's the deal. I have the following code: >> >> if($col_vals[$i][$val['column']] == $search_result[0][$col]) >> { echo ' selected="selected"'; } >> elseif($val['default'] == $col_vals[$i][$val['column']]) >> { echo ' selected="selected"'; } >> >> It's supposed to check whether there's a value in the db >> ($search_result[0][$col]) that matches the current column value, and >> if not, check whether the default matches it. It does that, sort of. >> In fact, both statements trigger, which I would have said wasn't >> possible. >> >> So the question is: what causes both parts of an if/elseif >> statement to trigger? As far as I can see my punctuation is correct, >> and I've confirmed through debugging statements that all the values >> are what I expect, so how do I make the elseif stop acting like >> another if? Or, alternatively, have I just misunderstood all this >> time what the if/elseif statement does? >> >> Thanks, >> Alex >> >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php