<select name="select">
</select>
I want to populate the above tag with values from database.
I have written PHP code up to this.
while($row=mysql_fetch_array($result))
{
}
$row is fetching correct values. How to add it to the <select>
What about something like this :
echo '<select name="select">';
while($row=mysql_fetch_array($result))
{
echo '<option value="' . htmlspecialchars($row['column_for_value']) . '">'
. htmlspecialchars($row['column_for_label'])
. '</option>';
}
echo '</select>';
Of course, up to you to decide which items from $row
should be used for the value and the text of each <option>
Just make sure you are escaping the data that comes from your DB -- especially if it can contain HTML ; as you are outputting HTML, this can be done with htmlspecialchars
or htmlentities
.
Note that those might take a couple of additionnal parameters that I didn't use in my example -- setting those can be useful, depending on the charset you're using.
All the above answers will work, but are not proper and require extra work. You should not use echo to output to the screen and you don't have to. The below example assumes you are using objects containing data, but you get the idea.
<select name="sales_person">
<?php foreach ($sales_people as $sales_person){?>
<option value="<?=$sales_person->first_name?> <?=$sales_person->last_name?>"><?=$sales_person->first_name?> <?=$sales_person->last_name?></option>
<?php }?>
</select>
The point being you don't have to echo out the html
You can see whats available to use by doing this in the while:
var_dump($result);
exit;
That will print the first result and its array contents. Then you can see what field you want to use to populate the option. From there, you would do something like:
foreach ($result['field'] as $field) {
print '<option value="'.$field.'">$field</option>';
}
Of course this is a very basic example, and as others have noted you may want to clean the data before putting it into a form.
$selected_value="selected_value";
echo '<select name="select">';
while($row=mysql_fetch_array($result))
{
if($selected_value==htmlspecialchars($row['column_for_value']))
$selected=' selected';
else
$selected='';
echo '<option value="'.htmlspecialchars($row['column_for_value']).'"'.$selected.'>'
.htmlspecialchars($row['column_for_label']).
'</option>';
}
echo '</select>';
Some addition to Pascal MARTIN code, for auto selection of some predefined value
I editied the last entry to this and it works perfectly. The only hassle I have now is once the user has submitted the form the dropdown goes blank... Does anyone know a simple solution
echo '<select name="course" id="course" >';
while( $option = mysql_fetch_array($course_results)) {
echo "<option value=".htmlspecialchars($option['cid']).">".htmlspecialchars($option['cname'])."</option>";
}
echo "</select>";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With