PHP更新表单中的MySQL记录集中的多个选择表单元素

时间:2013-03-20 15:30:41

标签: php mysql

我有一个名为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中找到的数据元素。我无法使连接正常工作,然后更新表单元素以突出显示这些。

2 个答案:

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