我有一个表单,允许用户使用复选框在作业中添加或删除用户。目前,工程师的姓名等存储在一个名为“用户”的表中,并且由用户类型,工程师识别。表单上的复选框是使用while循环创建的,以显示mysql查询。这样做是为了可以在以后通过网页将新用户添加到数据库中,并且他们的名称将自动添加到可用工程师列表中。要将工程师添加到工作中,只需勾选其名称并提交表单。
这很好但我希望用户能够通过检查和取消选中另一个表单上的框来添加或删除用户,但我不能想到我的生活如何做到这一点。
分配给作业的用户存储在名为calls_engineers的多对多表中,该表有3个字段
id_ce(唯一ID) call_ce(作业的id,外键) engineer_ce(工程师的ID,外键)
engineer_ce是'users'表中的用户主键,即'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>
<?
}
?>
所有这一切都是为每个用户创建复选框,这是一个工程师,但如果用户被分配到该工作,则不会检查它们。
非常感谢任何帮助
答案 0 :(得分: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>
<? } ?>