Re: if/elseif being treated as if/if

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux