Domas
Domas

Reputation: 1133

Standard way of selecting value in <select>

Here is the static dropdown:

 <select style="width:100px" name="drink_type">
 <option value="Water">Water</option>
 <option value="Soda">Soda</option>
 <option value="Milk">Milk</option>
 </select>

I have a dynacim drink type saved as a string in a php variable $drink_type. On object edit I would like to set a selected dropdown value according to $drink_type.

Finding the most standard way would be the best case.

Upvotes: 0

Views: 66

Answers (4)

user2268997
user2268997

Reputation: 1391

Here it is, (with a little shortcut):

foreach(array('Water', 'Soda', 'Milk') as $value){
  echo "<option value=\"$value\" ";

  if($property_name == $value)
    echo "selected=\"true\"";

  echo ">$value</option>";
}

Upvotes: 3

Atik Khan
Atik Khan

Reputation: 513

Try it.

    <select name="types">
    <?php
        $select_value="water";
        $drinks = array('Water', 'Soda', 'Milk');
        foreach ($drinks as $value) {
           $selected=$value==$select_value? " selected":"";
           echo '<option value="' . $value . '"  '.$selected.' >' . $value . '</option>';
        }  
    ?>
    </select>

Or If you have database table then you can use below code

--Start--

    function itemList($set=""){
        // write user query 
        $query = "SELECT id,name FROM table_name WHERE 1 ORDER BY `name`";
                $result = mysql_query($query);
$selected_id=5;
                if(mysql_num_rows($result)>0){
                    echo '<select name="types">';
                    while($data = mysql_fetch_array($query)){ 
                        $value = $data['id']; 
                        $selected = $value == $selected_id ? ' selected="selected"' : '';
                        echo '<option value="$value" '.$selected.'>' . $data['name'] . ' </option>';                
                    } // end while loop
                    echo '</select>';
                } // end if condition
    } // end function

--End--

Upvotes: 1

Julia Will
Julia Will

Reputation: 616

You need to check for each element if the value of the select is equal to $drink_type

<option value="Water" <?php if ($drink_type == 'Water') echo 'selected="selected"' ?>>Water</option>

As you can see, this is a lot of stuff to write for longer selects, so you should probably store your values in an array and loop through them.

<select name="drink_type">
<?php
$values = array('Water', 'Soda', 'Milk');
foreach ($values as $value) {
    $selected = ($value == $drink_type) ? ' selected="selected"' : '';
    echo '<option value="' . $value . '"' . $selected . '>' . $value . '</option>';
}  
?>
</select>  

Upvotes: 1

raduation
raduation

Reputation: 792

You can check $drink_type and use the selected attribute.

<select style="width:100px" name="drink_type">
 <option value="Water" <?php if($drink_type == 'Water') echo 'selected'; ?>>Water</option>
 <option value="Soda" <?php if($drink_type == 'Soda') echo 'selected'; ?>>Soda</option>
 <option value="Milk" <?php if($drink_type == 'Milk') echo 'selected'; ?>>Milk</option>
 </select>

Upvotes: 2

Related Questions