【问题标题】:Button Value Not Changing when Text Field Isn't Empty文本字段不为空时按钮值不变
【发布时间】:2017-05-07 01:20:38
【问题描述】:

当 php 变量不为空时,让我的提交按钮更改值时遇到一个小问题。所以我设置它的方式是,当按下“GO”按钮时,它会将文本字段的值设置为“1234567890”,这意味着它不再为空。现在,当页面第一次加载时,文本字段将为空,并且按钮应该说“GO”一旦按下,文本字段值就会改变,按钮现在应该说“REFRESH”但是它一直说“GO”任何人都可以看到我在哪里我这里哪里出错了?

谢谢。

PHP

<?
if (!$HostKey){
    $HostBtn = 'GO';
}
else{
    $HostBtn = 'REFRESH';
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    if (isset($_POST['Go'])) {

            $HostKey = "123567890";

        }
    }
}
?>

HTML

<form action="Home.php" method="post">
    <p><strong>HOST:</strong>
    <input name="Host" id="Host" type="text" value="<? echo $HostKey; ?>" maxlength="10" disabled>
    <input name="Go" id="Go" type="submit" value="<? echo $HostBtn; ?>"></p>
</form>

【问题讨论】:

  • 你建议我如何解决这个问题?

标签: php html


【解决方案1】:

您的问题是合乎逻辑的,因为在您进行检查之前未定义 $HostKey - 所以 $HostKey 为空。你在之后定义它。然后,由于该变量实际上为 null,因此当您应用非运算符 ! 时,该条件始终为真。

您应该重构您的代码以检查表单是否已提交,并以此为基础定义变量的值。你在 PHP 中所需要的只是

$HostBtn = isset($_POST['Go']) ? 'REFRESH' : 'GO';
$HostKey = isset($_POST['Go']) ? 123567890 : '';

这也将修复“未定义的变量...”通知,如果您启用了错误报告,您应该收到,

error_reporting(E_ALL);
ini_set("display_errors", 1);

在开发过程中应该启用。在实时环境中,您不应该显示实际错误 - 但在开发中这样做很好。

【讨论】:

  • 感谢您的帮助和解决此问题,这可能是我,但您是否缺少括号isset($_POST['Go']
【解决方案2】:

你应该试试这样的:

<?

    if (isset($_POST['Go'])) {

            $HostKey = "123567890";
            $HostBtn= "REFRESH";

}else{
        $HostKey="";
        $HostBtn="GO";
}


?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多