2013-03-20 54 views
0

我有表名为empicons有两列:EMPNO,IconId多重选择表单元素

我已在EMPNO存储为一个名为$ EMPNO

我有另一个表会议称为图标,有3列:Id,名称,URL

目前我有一个记录集,选择图标表Id和名称,并将其呈现在多选框中,然后更新empicons表。

记录查询:SELECT ID,名字从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和图标表的连接,以使多选择基于EmpNo变量突出显示empicons中的数据元素。我无法让连接正常工作,然后更新表单元素以突出显示这些。

+0

[**在新的代码,请不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。 – Kermit 2013-03-20 15:34:02

+0

我欣赏评论,mysql_ *是现有的代码,有没有一种方法可以用PDO或MySQLi来制定和回答,我可以从中学习@PolishPrince? – 2013-03-20 15:59:08

回答

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”表,并为他们每个人在empicons当前EMPNO相应记录所有图标。如果没有相应的记录,您将在'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> 
+0

这是完美的,正是我所需要的。谢谢! – 2013-03-20 17:03:08

2

试试这个。它使用mysqli_函数。如果您在使用这两个表时遇到问题,那么我们需要处理您的查询。

<?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); 
?>