Reputation: 207
I'm having a input form that asks for a location. The locations are stored in a mysql db and have an id (colomn: id and column: location).
I have a drop down menu that is generated from those records in the db:
<select name="location">
<?php
$query="SELECT location FROM locations";
$result=mysql_query($query) or die;
while ($row=mysql_fetch_array($result)) {
$location=$row['location'];
echo "<option>$location</option>";
?>
</select>
This all works. When the form is sumbitted, I obviously get a POST[location] for example "Belgium".
Let's say Belgium is the location in my db and has id 5, how can I return the ID as the POST variable from the dropdown box, instead of the location. Ofcourse I want the dropdown to show the locations, and not the ID's.
Thanks in advance!
Upvotes: 0
Views: 3184
Reputation: 12985
<select name="location">
<?php
// select columns you need, separate by , (comma)
$query = "SELECT `column1`, `column2` FROM `locations`;";
$result = mysql_query($query) or die;
while ($row = mysql_fetch_array($result)) {
// selected columns become accessible in $row array
// value attribute needs to be escaped here
echo '<option value="', htmlentities($row['column1']),'">',
htmlentities($row['column2']), '</option>'; // escape label too
// <option> does not accept HTML in label so it should be escaped
} // done!
?>
</select>
^ this (read comments for explanations)
Upvotes: 0
Reputation: 4657
if you change the SQl query to include the ID of the location, you can assign that value to the dropdown selected value.
<select name="location">
<?php
$query="SELECT id, location FROM locations";
$result=mysql_query($query) or die;
while ($row=mysql_fetch_array($result)) {
$location=$row['location'];
$id = $row['id'];
echo "<option value='".$row['id']."'>".$location."</option>";
?>
</select>
Upvotes: 1
Reputation: 24276
Each option can take a value and show another string so use value="my_value"
for each option inside the select tag
<select name="location">
<?php
$query="SELECT id, location FROM locations";
$result=mysql_query($query);
while ($row=mysql_fetch_array($result)) {
echo "<option value=\"" . $row['id'] . "\">" . $row['location'] . "</option>";
}
?>
</select>
now your POST['location']
will contain the db id for selected location
Upvotes: 3
Reputation: 3574
select ID from locations;
$ID=$row['ID'];
Replace ID by the ID-name of your column ofcourse.
If you say select * from locations you can do something like this:
$row['anyCOLUMNNAME']
You can choose any column you like and use that information from that particular row.
Upvotes: 0