【问题标题】:Making form fields conditionally read only (PHP)使表单字段有条件地只读(PHP)
【发布时间】:2013-11-05 14:06:34
【问题描述】:

假设我在表格行中有几个表单域: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';
   }
 }

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

【问题讨论】:

  • 那是无效的语法,你缺少一个右括号。

标签: php html mysql


【解决方案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']] = '';
   }
}

【讨论】:

  • 太棒了。那么,我应该这样呼应变量吗?
【解决方案2】:

你可以试试这个吗,你需要重新初始化 $readonly;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2012-10-20
    • 2011-01-10
    • 2015-05-23
    相关资源
    最近更新 更多