xjshiya
xjshiya

Reputation: 925

<select> dropdown default value

I have this code:

if(isset($_POST['search']))
{
    $res1=mysql_query("SELECT * FROM aircraft where acode = '$_POST[ac]'") or die(mysql_error());
    while($row=mysql_fetch_array($res1))
    {
        $airc=$row['acode'];
        $amode=$row['amodel'];
        $stat=$row['status'];
        $rem=$row['remarks'];

    echo "<center><table><form name=\"frmMain\" method=\"post\"> 
        <tr><td><font face=consolas><b>Aircraft Code:</b></font></td><td><input type=text name=arc value='$airc' readonly=readonly></td></tr>
        <tr><td><font face=consolas><b>Aircraft Model:*</b></font></td><td><input type=text name=am value='$amode'></td></tr>
        <tr><td><font face=consolas><b>Status:*</b></font></td><td><input type=text name=st value='$stat'></td></tr>
        <tr><td><font face=consolas><b>Remarks:*</b></font></td><td><input type=text name=rm value='$rem'></td></tr></table>";
    }
}

On submit 'search' button, this code displays the data from aircraft table. The user is allowed to update the data with the (*) sign.

enter image description here

Since the Status are the following by default (Available, Not Available), I changed this

 <tr><td><font face=consolas><b>Status:*</b></font></td><td><input type=text name=st value='$stat'></td></tr>

to this,

<tr><td><font face=consolas><b>Status:*</b></font></td><td><select name=st>
    <option value=Available>Available</option>
    <option value='Not Available'>Not Available</option>
</select></td></tr>

But I want the dropdown to have it's default value depending on $stat=$row['status']; since this is an update form.

If the data being retrieved has it's status 'Available', then the dropdown should have it's default value as 'Available'.

How can I achieve that? I tried <select name=status value='$stat'> but it doesn't work. Any help will be appreciated. Thanks!

Upvotes: 8

Views: 83660

Answers (8)

Pragnesh Chauhan
Pragnesh Chauhan

Reputation: 8476

You can set the selected dropdown option from database as below:

<select name="status"> 
<option <?php echo ($row['status'] == 'Available') ? 'selected' : '' ?> value='Available'>Available</option> 
<option <?php echo ($row['status'] == 'Not Available') ? 'selected' : '' ?> value='Not Available'>Not Available</option> 
</select>

Upvotes: 1

A.Aleem11
A.Aleem11

Reputation: 1954

You can define your variable value with additional option tag and mark that as selected like:

<select name="role" id="role">
<!-- This is default define value using php variable $r -->
<option selected="selected" value="<?php echo $r; ?>" disabled="disabled"><?php echo $r; ?></option>

<!-- Other options values -->
<option value="2">Option-2</option>
<option value="2">Option-2</option>
</select>

Upvotes: 1

justin
justin

Reputation: 62

its my first time here though and i tried using basic principles in php, dont know if this helps you but if you're trying to grab the defaulted value which you inputted on your database then edit it again i suggest you try this one

<select name="st">
<?php if($row['status']=="Available"){?><option value="Available">Available</option><?php }?>
<?php if($row['status']=="Unavailable"){?><option value="Unavailable">Unavailable</option><?php }?>
</select>

Assuming that the column name in your database is 'status', give it a try works for me

Upvotes: 0

jeswin
jeswin

Reputation: 382

Declare the options in an array like

$arr = array("available" => "available","unavailable" => "unavailable");

and input the drop down like this

echo form_dropdown("st", $arr, set_value("st", (isset($row['status'];) ? $row['status']; : ""))

This is the method commonly used in frameworks like codeigniter.. i think it works in core php too..

Upvotes: 0

Sam Janssens
Sam Janssens

Reputation: 1491

write Available and Unavailable into an array

$theArray = array("Available","Not Available");

loop the array:

<tr><td><font face=consolas><b>Status:*</b></font></td><td><select name=st>
<?php
foreach ($theArray as $key => $value) {
    if ($value == $stat) {
        echo('<option selected="selected" value='.$value.'>'.$value.'</option>');
    } else {
        echo('<option value='.$value.'>'.$value.'</option>');
    }
}
?>
</select></td></tr>

and in each loop we check if the value in the array, is the same as it is in the variable, if so, we put the selected there

understand the logic?

Upvotes: 3

Vinay
Vinay

Reputation: 2594

Just put selected="selected" on the option depending on your $row['status'],

<option selected="selected" value="available">Available</option>

Upvotes: 14

amitchhajer
amitchhajer

Reputation: 12830

<?php
$status = "navail";
?>
<select name="sel">
<option value="avail" <?php if($status == "avail") echo "SELECTED";?> > Avail </option>
<option value="navail" <?php if($status == "navail") echo "SELECTED";?> > Navail </option>
</select>

Upvotes: 1

Rohan Sood
Rohan Sood

Reputation: 437

<select name=status>
<option value="available" <?php if($row['status']=="available") echo "selected=\"selected\""; ?>>Available</option>
<option value="unavailable" <?php if($row['status']=="unavailable") echo "selected=\"selected\""; ?>>Unvailable</option>
</select>

Basically echo selected="selected" for the option depending on value of the concerned field.

Upvotes: 1

Related Questions