Avinash
Avinash

Reputation: 2005

assign selected option value from database

I have a form which contains a dropdown list of countries generated from database. The values are stored in database. There is an option in which user can view or update the valuesinserted. For updating all the form values get fetched from database. What i require is that when form is loaded for updating the selected option of the country dropdown must be that stored in the database. For eg: if from the following dropdown option2 is selected and inserted into database.

 Dropdown: |option1|<selected>
           |option2|
           |option3|

during update it should be like this

 Dropdown: |option1|
           |option2|<selected>
           |option3|

Here is the code i tried.

      $selected = $list["country_country_name"];

     <tr><td>Country</td><td><select onchange="getCountry(this.value);" name="country" id="country" ><?php  foreach( $query as $qry ) { 
     print '<option value="'.$qry["country_country_name"].'"'; 
     if( $qry["country_country_name"] == $selected ) print'selected'; 
     print '>'.$qry["country_country_name"].'</option>'."\n";} ?>
     </select></td></tr>

Upvotes: 0

Views: 4814

Answers (3)

mickmackusa
mickmackusa

Reputation: 47894

When your option tag's value attribute contains the same value as the option's text, the value attribute is not necessary -- so omit it.

Below shows an inline condition statement.

<tr>
    <td>Country</td>
    <td><select onchange="getCountry(this.value);" name="country" id="country">
        <?php
        foreach ($query as $row) { 
            echo "<option" ,
                ($row["country_country_name"] == $list['country_country_name'] ? ' selected' : '') ,
                "{$row['country_country_name']}</option>\n";
        }
        ?>
    </select></td>
</tr>

Upvotes: 0

Tiago Moutinho
Tiago Moutinho

Reputation: 1372

<select id="list" name="list">
    <option value=""> Please Select </option>
    <?
        $list = array('1',
                        '2',
                        '3',
                        '4',
                        '5',
                        '6');

        while ($L = array_shift($list)) {
            ?>
                <option value="<?=$L?>" <? if($selected == $L){ echo 'selected="selected"'; }?> > 
                    <?= $L ?> 
                </option> 
            <?
         }
    ?>
</select>

you can simple get the selected option with this:

$("#list").val();

try please.

Upvotes: 1

harsh4u
harsh4u

Reputation: 2598

$selected = $list["country_country_name"];

 <tr><td>Country</td>
 <td>
 <select onchange="getCountry(this.value);" name="country" id="country" >
 <?php  foreach( $query as $qry ) { 
    $sel = '';
   if( $qry["country_country_name"] == $selected ) 
    $sel = 'selected="selected"';           

    echo '<option value="'.$qry["country_country_name"].'" '.$sel.'>'.$qry["country_country_name"].'</option>'."\n";
    } ?>
    </select>
    <?php echo form_error('country'); ?>
    </td>
 </tr>

Upvotes: 0

Related Questions