2013-07-11 156 views
0

我正在修改一个表单,这是我从来没有真正有过的工作经验。对于记录我不编码PHP。更改一个下拉列表提供一个选择选项复选框中的多个选项

简而言之:html/php表单有五个值(研究领域)的下拉列表,您只能选择其中一个。但客户希望能够选择多个。所以,现在我想垃圾下拉,并有复选框。

我宁愿为目前的设置做最少的mod。

注*这是一个动态下拉列表;所以这些值从另一个表中提取并提交给数据库。

这里是我的工作代码:

$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>\n"; 
    } 
    ?> 
</select> 

在此之后,提交的数据也更新到网页中的表格与此:

<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> 

我将如何改变下拉到最少量的mods复选框?

+1

为什么不使用选择与多选的机会? –

回答

1

可以做到这一点

在HTML页面选择框

替换:

<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>\n"; 
    } 
    ?> 
</select> 

通过:

<?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++; 
     } 
?> 

在提交页面:

REPL王牌:

if (in_array($opp['strfieldofstudy_en'], $fieldsOfResearch)){ 
     echo $iri->getFieldOfResearch($opp['strfieldofstudy_en'], 'en'); 
    } 
    else 
    echo $opp['strfieldofstudy_en']; 

通过:

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,...). 

我希望这能有一定的帮助

相关问题