我有一个名为empicons的表,它有两列:EmpNo,IconId
我将EmpNo存储为名为$ EmpNo
的会话我有另一个名为icons的表,其中包含3列:Id,Name,URL
目前我有一个记录集,可以选择图标表Id和Name,并将其显示在Multiple Select框中,然后更新empicons表。
Recordset查询:SELECT id,name FROM gbl_icons ORDER BY id ASC
多个选择表单元素:
<select name="icons[]" size="10" multiple="multiple">
<?php
do {
?>
<option value="<?php echo $row_icons['id']?>"><?php echo $row_icons['name']?></option>
<?php
} while ($row_icons = mysql_fetch_assoc($icons));
$rows = mysql_num_rows($icons);
if($rows > 0) {
mysql_data_seek($icons, 0);
$row_icons = mysql_fetch_assoc($icons);
}
?>
</select>
我正在尝试使用empicons和icons表进行连接,以便“多选”突出显示基于EmpNo变量在empicons中找到的数据元素。我无法使连接正常工作,然后更新表单元素以突出显示这些。
答案 0 :(得分:2)
试试这个。它使用mysqli_
个函数。如果您在JOIN
这两个表时遇到问题,那么我们需要处理您的查询。
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT id, name FROM gbl_icons ORDER BY id ASC";
echo '<select name="icons[]" size="10" multiple="multiple">';
if ($result = mysqli_query($link, $query)) {
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
echo '<option value="' . $row[id] . '">' . $row[name] . '</option>';
}
/* free result set */
mysqli_free_result($result);
}
echo '</select>';
/* close connection */
mysqli_close($link);
?>
答案 1 :(得分:1)
您的查询应该是这样的
SELECT i.id, i.name, e.EmpNo FROM gbl_icons i
LEFT JOIN empicons e ON e.IconId = i.id AND e.EmpNo = '$EmpNo'
ORDER BY i.id ASC
因此,您将从'gbl_icons'表中获取所有图标,并为每个图标获取当前EmpNo的empicons中的相应记录。如果没有相应的记录,您将在“EmpNo”列中获得NULL。
你的代码应该是那样的
<select name="icons[]" size="10" multiple="multiple">
<?php
while($row_icons = mysqli_fetch_assoc($icons)) {
?>
<option value="<?=$row_icons['id']?>" <?=!empty($row_icons['EmpNo']) ? ' selected="selected"' : ''?><?=$row_icons['name']?></option>
<?php
}
?>
</select>