2011-12-13 88 views
0

我想创建一个管理页面列出所有在网站上注册的成员。该页面填充用户表中的记录。在此页面中,我试图添加一项功能,管理员可以将用户类型更改为管理员或用户。为此,我试图使用html选择标签。我使用表的ID字段填充选择标签的名称。这是我的。我使用while循环遍历mysql_fetch_array函数的结果。HTML选择元素和处理在PHP

<TD> 
<select name='members[{$row['ID']}]'> 
<option value=>Select...</option> 
<option value=A>Admin</option> 
<option value=U>User</option> 
</select> 
</TD> 

<input type=submit value=Submit name=Done /> 

当用户选择一个类型,管理员说,我希望它能够与该类型为该特定用户更新表。这里是我的PHP看起来像:

if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
if ($_POST['Done']) 
{ 
    if(isset($_POST['members'])) 
     { 
      foreach($_POST['members'] as $member => $type) { 
       echo "<tr><td>$member</td><td>$type</td></tr>"; 
mysql_query("UPDATE MEMBERS SET Type='$type' whereMember_ID='$member';") or die("Can't Update"); 
    } 
    } 
} 
} 

从我现在所能,我能够更新。但问题是,当我没有选择任何选项(管理员或用户)时,按下提交按钮时,表中所有用户的类型被设置为空(它变为空白)。例如,如果我显示了五个成员,并且我只为3个用户选择类型,然后单击提交,则其他2的类型设置为空白。我如何才能让它只针对选定的用户进行更新,而不是其他人。我想不出任何其他更新用户类型的方式,所以我尝试这样做。任何提示/建议/帮助将不胜感激。

回答

0

我相信你应该检查值是否设置在你的foreach循环中。例如。

if($_SERVER["REQUEST_METHOD"] == "POST") { 
    if ($_POST['Done']) { 
     foreach($_POST['members'] as $member => $type) { 
      if (isset($member) && isset($type)) { 
       echo "<tr><td>$member</td><td>$type</td></tr>"; 
       mysql_query("UPDATE MEMBERS SET Type='$type' whereMember_ID='$member';") or die("Can't Update"); 
      } 
     } 
    } 
} 
0

变化

<option value=>Select...</option> 

<option value=null>Select...</option> 

然后,请确保选择是不是做的MySQL更新之前空...

foreach($_POST['members'] as $member => $type) { 
    if ($type != null) { 
     echo "<tr><td>$member</td><td>$type</td></tr>"; 
     mysql_query("UPDATE MEMBERS SET Type='$type' where Member_ID='$member';") or die("Can't Update"); 
    } 
} 

有是更好的方法来做到这一点(例如,inste广告有一个“选择...”选项,只是填充它的当前值是什么,所以它总是显示成员类型是什么)。但是这应该适用于你的例子。