【问题标题】:Why is my if statement not working for all the mysql results?为什么我的 if 语句不适用于所有 mysql 结果?
【发布时间】:2019-02-25 22:12:19
【问题描述】:

所以我一直在尝试在我的 while 循环中添加一个 if 语句。现在我并不是很了解,但是当我环顾四周时,我没有发现任何问题。我将 if 语句放在外部和内部,但 if 语句仅适用于一个条目,即使有三个条目。

while($r=mysql_fetch_array($res))
   {

        if (isset($r[3])) {$urlvalue =  $r[3];
            $disable ='<script>
            document.getElementById("adurl").disabled = true;
            document.getElementById("update").disabled = true;
            </script>';
        }
            else {$urlvalue = "";}

     print "<tr><form style='text-align:center;' method='post' action='loginspotlight.php'>";
     print "<td style='text-align:center;'>$r[0]</td><td style='text-align:center;'>$r[1]</td><td style='text-align:center;'>$r[2]</td><td style='text-align:center;'><input id='adurl' name='adurl' type='url' value='$urlvalue'/></td><td style='text-align:center;'>$r[4]</td><td style='text-align:center;'>$r[5]</td><td>";
     print "<input align='center' type='hidden' value='$r[0]' name='spotid'/>";
     print "<div width='100px'><input id='update' align='center' type='submit' name='cmd' value='Update'/><div>$disable</div></div>";
  print "</td></form></tr>";                 
   }
 print "</table><br><br>"; 

看起来像这样: 希望你能帮帮我!我也会清理 mysql 的所有 $_POST 值。

【问题讨论】:

  • 什么是var_dump($r)?另外,不要使用 mysql_ - 学习使用 mysqli 或 pdo 来代替准备好的语句
  • 这就是我的计划,我是一个初学者,所以我试图在我的脑海中包含尽可能多的关于 mysql 函数的信息。完成后,我会将我的 sql 查询转换为 mysqli 或准备它们。不过感谢您的帮助!
  • I'll be sanitizing all $_POST values for mysql as well. 如果我有五分钱...

标签: php html mysql arrays


【解决方案1】:

问题是您对多个元素使用相同的 ID。

与其调用 javascript 来执行,为什么不直接在输出时禁用元素?

while($r=mysql_fetch_array($res))
   {

        if (isset($r[3])) 
        {
            $urlvalue =  $r[3];
            $disabled = 'disabled="disabled"';
        }
        else 
        {$urlvalue = "";}

     print "<tr><form style='text-align:center;' method='post' action='loginspotlight.php'>";
     print "<td style='text-align:center;'>$r[0]</td><td style='text-align:center;'>$r[1]</td><td style='text-align:center;'>$r[2]</td><td style='text-align:center;'><input id='adurl' name='adurl' type='url' value='$urlvalue' $disabled/></td><td style='text-align:center;'>$r[4]</td><td style='text-align:center;'>$r[5]</td><td>";
     print "<input align='center' type='hidden' value='$r[0]' name='spotid'/>";
     print "<div width='100px'><input id='update' align='center' type='submit' name='cmd' value='Update' $disabled/><div>$disable</div></div>";
    print "</td></form></tr>";                 
   }
 print "</table><br><br>"; 

或者,您可以将查询结果的 ID 放入元素的 ID 中以使其唯一。

例如:

$disable = '<script>document.getElementById("update_' . $r[0] .'").disabled = true;</script>';
print '<input id="update_' . $r[0] . '" type="text"/>';
print $disable

【讨论】:

  • 这解决了我的问题,谢谢!我唯一改变的是: if (empty($r[3])) { $urlvalue = ""; $disabled = '启用'; } 其他 {$urlvalue = $r[3]; $disabled = '禁用'; }
  • 很高兴听到它对您有用!养成的一个好习惯是尽量不要依赖 javascript 将您的页面设置为初始状态。如果您要输出 HTML,您应该尝试以您需要的任何状态输出它。如果您对此解决方案感到满意,请不要忘记指出问题已得到回答!
  • 如果设置了$r[3],是否可以完全删除按钮?
  • 您可以将输出按钮的print 语句放在执行$r[3] 检查的if 语句中。换句话说,只有在 $r[3] 没有设置时才输出按钮。 if (!isset($r[3])) {print '&lt;input type="button" /&gt;';}
猜你喜欢
  • 2018-08-23
  • 2012-11-14
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2013-02-26
相关资源
最近更新 更多