mysql数组放入下拉框中,然后在使用后删除该选择


mysql array into dropdown box and then remove that selection after it was used

基本上,我想做的是将mysql_array的内容填充到下拉框中。。。在用户做出选择并提交表单后,下拉框将不包含他们刚刚使用的选择。。。。此表格必须多次提交。。。如果只提交一次,我可以让它正常工作,没有问题。。。所以我多次尝试将他们已经使用过的东西放入一个数组中,然后将其与mysqlarray进行比较,这样已经选择的项目就不会再次出现。。。。这就是我所拥有的,我可能离很远

$_SESSION['name']=array();
array_push($_SESSION['name'],$_POST['selEmpl']);

function e(){
$sql="select name from IMSemploy ORDER BY name ASC"; 
$results=mysql_query($sql) or die(mysql_error()); 
echo"<select name='"selEmpl'" size='"1'">";
?><option value="Select">Select</option> <?
foreach ($_SESSION['name'] as $value){
while ($row = mysql_fetch_array($results)){
if($row['name']!=$value){
echo'<option value="'.$row['name'].'">'.$row['name'].'</option>';
}
}
}
echo'</select>';
}

那么您想隐藏已经单击的值吗?

您只需要循环一次sql结果集,并且不显示会话中已经存储的值:

while ($row = mysql_fetch_array($results))
{
  if (array_search($row['name'], $_SESSION['name']) === false)
  {
    echo'<option value="'.$row['name'].'">'.$row['name'].'</option>';
  }
}

除此之外,每次运行脚本时都会破坏$_SESSION['name']变量,您只需要第一次将其设置为空数组:

session_start();
if (!isset($_SESSION['name']))
{
  $_SESSION['name']=array();
}

在显示选项元素之前,删除foreach循环并测试此条件

if (!in_array($row["name"], $_SESSION["name"])) {
    echo'<option value="'.$row['name'].'">'.$row['name'].'</option>';
}