使表单字段有条件地只读(PHP)

时间:2013-11-05 14:06:35

标签: php html mysql

假设我在表行中有几个表单字段系列:f1,f2,f3; g1,g2,g3; h1,h2,h3等。

现在假设我有一个存储在PHP会话变量中的用户名,该变量可能与其中一个系列中的字段值匹配。这里,可能匹配的字段值是f1(echo $ row ['pers1Name']),g1(echo $ row ['user1Name'])或h1(echo $ row ['manage1Name'])。

我需要锁定表单,以便只有与会话用户相关的字段才可以编辑。所有其他人都需要只读。例如,如果会话用户名== $ row ['pers1Name'],那么我怎样才能使f2,f3可编辑但g1-g3,h1-h3不是?这似乎是一个循环的工作,但我的尝试只是部分成功。

for($i=1; $i<=6; $i++)
 {
   if($_SESSION['userName'] != $row['pers'.$i.'Name'])
   {
     $readonly = ' readonly';
   }
 }

这里显而易见的问题是,即使找到匹配项,其他值也不匹配,并且我回显$ readonly的每个字段都会被锁定。我至少走在正确的轨道上吗?

2 个答案:

答案 0 :(得分:1)

您可以将值存储在数组中,并将$row['pers'.$i.'Name']作为键 -

for($i=1; $i<=6; $i++){
   if($_SESSION['userName'] != $row['pers'.$i.'Name'])
   {
     $readonly[$row['pers'.$i.'Name']] = ' readonly';
   }
   else {
     $readonly[$row['pers'.$i.'Name']] = '';
   }
}

答案 1 :(得分:0)

你可以尝试这个,你需要初始化$ readonly;

    for($i=1; $i<=6; $i++)
     {
       $readonly ='';
       if($_SESSION['userName'] != $row['pers'.$i.'Name'])
       {
         $readonly = ' readonly';
       }
     }