从具有相同名称属性

时间:2016-09-14 12:37:56

标签: javascript php input drop-down-menu radio-button

我尝试开发一个更新/编辑表单,其中包含一组单选按钮以及两个不同的下拉列表

HTML

2单选按钮 - 从SQL数据库(一个和两个)填充:

<?php if ($rows_item['choice'] == "One" )  {?><input name="owner_c" id="owner_c1" type="radio" value="One" checked="checked" onclick="show1()"/>One<?php } ?>
<?php if ($rows_item['choice'] == "Two" )  {?><input name="owner_c" id="owner_c2" type="radio" value="Two" checked="checked" onclick="show2()"/>Two<?php } ?>

2下拉列表 - 通过while循环(Section&amp; Department)从SQL数据库填充:

<div id="div1" class="<?php if ($rows_item['choice'] != "One") { echo "hide";} ?>">
<p align="center">
  <?php
  if ($rows_item['choice'] == "One") {
      $sql_section = "SELECT * FROM borrower_section";
      $query_section = mysql_query($sql_section) or die('Error:'.mysql_error());
      ?>
  <select name="dept" id="dept1" style="width:400px;" required >
    <option value="-1" selected="selected" disabled="disabled">Sections *</option>
    <?php while ($row_section = mysql_fetch_array($query_section)) { ?>
    <option <?php if($rows_item['dept']==$row_section['sections']) { echo "selected";} ?> value="<?php echo $row_section['sections']; ?>"><?php echo $row_section['sections']; ?></option>
    <?php } ?>
  </select>
</p>
</div>


<div id="div2" class="<?php if ($rows_item['choice'] != "Two") { echo "hide";} ?>">
<p align="center">
  <?php
  }
  if ($rows_item['choice'] == "Two") {
      $sql_dept = "SELECT * FROM borrower_dept";
      $query_dept = mysql_query($sql_dept) or die('Error:'.mysql_error());
      ?>
  <select name="dept" id="dept2" style="width:400px;" >
    <option value="-1" selected="selected" disabled="disabled">Departments *</option>
    <?php while ($row_dept = mysql_fetch_array($query_dept)) { ?>
    <option <?php if($rows_item['dept']==$row_dept['dept_name']) { echo "selected";} ?> value="<?php echo $row_dept['dept_name']; ?>"><?php echo $row_dept['dept_name']; ?></option>
    <?php }}?>
  </select>
</p>
</div>

的Javascript

function show1(){
document.getElementById('div1').style.display ='block'; 
document.getElementById('div2').style.display ='none'; 
$('#dept2').removeAttr('required');
$('#dept1').attr('required','required');
}

function show2(){
document.getElementById('div1').style.display = 'none';
document.getElementById('div2').style.display = 'block';
$('#dept1').removeAttr('required');
$('#dept2').attr('required','required');
}

流程是;如果用户选择单选按钮一&#34; div1&#34;将出现 - &#34; div2&#34;隐藏,用户将选择任何项目并通过输入名称= dept 保存在数据库中。

如果用户选择单选按钮2 &#34; div2&#34;将出现 - &#34; div1&#34;隐藏,用户将选择其中的任何项目,也可以通过输入名称= dept 保存在数据库中。

我的问题是,如果用户选择单选按钮一,他们必须提交此表单两次才能保存&#34; dept&#34;在SQL数据库中。两个下拉列表都使用相同的名称,因为我想从任一个中获取数据并根据他们选择的单选按钮保存在SQL中的同一列= dept

如何防止这种情况并允许用户提交一次? TQ ..

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以尝试命名输入 dept [1] dept [2] ,然后只需将$ _POST ['dept']设置为包含已被填充的那个。

输入:

<select name="dept[1]" id="dept1" style="width:400px;" required >...</select>
<select name="dept[2]" id="dept1" style="width:400px;" required >...</select>

php:

$_POST['dept'] = !empty($_POST['dept'][1]) ? $_POST['dept'][1] : $_POST['dept'][2];

如果您使用javascript“过滤”输入,那么您可以继续操作。