I'm modifying a form and is something I've never actually had the experience in working with. For the record I don't code PHP.
In short: the html/php form has a drop down of five values (fields of research) of which you can only select one. But the client would like to be able to select more than one. So now I would like to trash the drop down and have checkboxes instead.
I would prefer to do the least mods to what is currently set-up.
Note* This is a dynamic dropdown list; so the values are pulled from another table and submitted to the database.
Here's the code I'm working with:
$query_fields_of_research = "SELECT * FROM tblOpportunityFieldOfResearch ORDER BY
field_of_research_en ASC;";
$sql->query($query_fields_of_research, SQL_ALL, SQL_ASSOC);
$fields_of_research = $sql->record;
?>
<select name="strFieldOfStudy_en" id="strFieldOfStudy_en">
<?php
foreach ($fields_of_research as $field) {
$selectedValue= "";
if ($strFieldOfStudy_en == $field['id'])
$selectedValue= " selected";
echo "\t\t\t".'<option
value="'.$field['id'].'"'.$selectedValue.'>'.$field['field_of_research_en']."
</option>
";
}
?>
</select>
Following this, the submitted data is also updated to a webpage in a table with this:
<tr>
<td>Fields of research</td>
<td>
<?php
$fieldsOfResearch = array('1', '2', '3', '4', '5');
if (in_array($opp['strfieldofstudy_en'], $fieldsOfResearch)){
echo $iri->getFieldOfResearch($opp['strfieldofstudy_en'], 'en');
}
else
echo $opp['strfieldofstudy_en'];
?></td>
</tr>
How would I change the dropdown to checkboxes with the least amount of mods?
You can do this
In html page with select box
Replace :
<select name="strFieldOfStudy_en" id="strFieldOfStudy_en">
<?php
foreach ($fields_of_research as $field) {
$selectedValue= "";
if ($strFieldOfStudy_en == $field['id'])
$selectedValue= " selected";
echo "\t\t\t".'<option
value="'.$field['id'].'"'.$selectedValue.'>'.$field['field_of_research_en']."
</option>
";
}
?>
</select>
By:
<?php
$i = 1;
foreach ($fields_of_research as $field) {
$selectedValue= "";
if ($strFieldOfStudy_en == $field['id'])
$selectedValue= 'checked="checked"';
echo '<checkbox id="strFieldOfStudy_en'.$i.'" name="strFieldOfStudy_en[]"
value="'.$field['id'].'"'.$selectedValue.'>'.$field['field_of_research_en'];
$i++;
}
?>
In the submit page:
Replace:
if (in_array($opp['strfieldofstudy_en'], $fieldsOfResearch)){
echo $iri->getFieldOfResearch($opp['strfieldofstudy_en'], 'en');
}
else
echo $opp['strfieldofstudy_en'];
By:
foreach($_POST['strFieldOfStudy_en'] as $item) {
if (in_array($item, $fieldsOfResearch)){
echo $iri->getFieldOfResearch($item, 'en');
}
else
echo $opp['strfieldofstudy_en'];
}
// here $_POST['strFieldOfStudy_en'] includes all the values of checkbox checked in
//the html form
// foreach extracts each value from $_POST['strFieldOfStudy_en'] into $item(say ids
//1,2,3,...).
I hope this can be of some help