1

我有一个表单,允许用户使用复选框从作业中添加或删除用户。目前,工程师的姓名等存储在一个名为“用户”的表中,并由他们的用户类型工程师识别。表单上的复选框是通过使用 while 循环来创建的,以显示 mysql 查询。这样做是为了以后可以通过网页将新用户添加到数据库中,并且他们的名字将自动添加到可用工程师列表中。要将工程师添加到工作中,只需勾选他们的姓名并提交表格。

这很好用,但我希望用户能够通过选中和取消选中另一个表单上的框来添加或删除用户,但我无法思考如何做到这一点。

分配给作业的用户存储在名为 calls_engineers 的多对多表中,该表有 3 个字段

id_ce(唯一标识) call_ce(工作标识,外键) Engineer_ce(工程师标识,外键)

Engineer_ce 是“用户”表中的用户主键,即“id”。

我到目前为止的代码是......

<?  $sql = "SELECT * FROM calls_engineers WHERE call_ce = '$diary_id'";
      $result = mysql_query($sql) or die(mysql_error());
      $row2 = mysql_fetch_array($result);
      $sql = "SELECT * FROM users WHERE type = 'engineer' ORDER BY first_name";
      $result = mysql_query($sql) or die(mysql_error());
      while ($row = mysql_fetch_array($result)){ ?>
          <div style="width:70px; float:left">
              <? 
                  if($row2['engineer_ce'] == $row['id']){
              ?>
              <input type="checkbox" name="engineer[]" checked="checked" value="<? echo $row['id']; ?>" />
              <? echo '   '.$row['first_name']; 
              } else { ?>
                  <input type="checkbox" name="engineer[]" value="<? echo $row['id']; ?>" />
              <? echo '   '.$row['first_name'];
              }?>
          </div>
  <?
      }

  ?>

所有这一切都是为每个工程师用户创建复选框,但如果用户被分配到工作中,它不会检查它们。

任何帮助将不胜感激

4

1 回答 1

0

您永远不会循环调用 calls_engineers 表。使用

$row2 = mysql_fetch_array($result);

实际上不会找到工程师的所有任务。现在检查每个工程师是否包含在当前工作中:

<?  

  $sql = "SELECT * FROM users WHERE type = 'engineer' ORDER BY first_name";
  $result = mysql_query($sql) or die(mysql_error());
  while ($row = mysql_fetch_array($result)){ ?>

      <div style="width:70px; float:left">
          <input type="checkbox" name="engineer[]" <? 
              $result2 = mysql_query("SELECT * FROM calls_engineers WHERE call_ce = '".mysql_real_escape_string($diary_id)."' AND engineer_ce = ".$row['id']);
              if(mysql_num_rows($result2) > 0) echo 'checked="checked"';
             ?> value="<? echo $row['id']; ?>" />
          <? echo '   '.$row['first_name']; ?>
      </div>

  <? } ?>
于 2012-09-13T22:51:57.073 回答