【问题标题】:Each time I press submit I want input text box change text每次按提交时,我都希望输入文本框更改文本
【发布时间】:2020-09-18 16:12:53
【问题描述】:

所以基本上我有一个简单的表单,我想在每次按下提交时使用 PHP 更改不同的输入框文本。我知道我的代码不起作用,但我不明白如何解决这个问题。也许数组不是最好的方法?

<body>
    <?php 
        if(isset($_GET['submit'])) exit();
        $msg= ['One', 'Two', 'Three', '']
    ?>

    <form action="<?php echo $_SERVER['PHP_SELF']?>">
    <input type="submit" name="submit" value="Paina nappi">
    <input type="text" name="msg" value="<?php echo (isset($msg)) ? $viesti : ''; ?>">
    </form>
</body>

【问题讨论】:

  • 你在哪里定义了$viesti变量?
  • 糟糕,它应该是 $msg 变量。我是否需要在每次提交时创建一个 for 循环来遍历我的数组?我在正确的轨道上吗?

标签: php forms submit


【解决方案1】:

你可以这样写:

<?php
    session_start();

    $msgArray= array('One', 'Two', 'Three', '');
    // if $_SESSION['msgIndex'] is not set, we initialize it, or it will take 0 value every loading page
    if (!isset($_SESSION['msgIndex'])) { $_SESSION['msgIndex'] = 0;  }

    if (isset($_GET['submit'])) {
        getMessage();
    }

    // We save msgIndex in a $_SESSION variable cause even if the user reload the page, we keep the value
    function getMessage() {
        if ($_SESSION['msgIndex'] >= 0) {
            $_SESSION['msgIndex'] += 1;
        } if ($_SESSION['msgIndex'] > 3) {
            $_SESSION['msgIndex'] = 0;
        }
    }
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>">
    <input type="submit" name="submit" value="Paina nappi">
    <input type="text" name="msg" value="<?= $msgArray[$_SESSION['msgIndex']] ?>">
</form>

【讨论】:

  • 谢谢!正如我想要的那样,它工作得很好!我遇到的唯一问题是我必须将&lt;?php session_start(); ?&gt; 放在文档开头的所有 html、head 和 body 标签下,否则我会出错。
  • 是的,因为如果你使用 $_SESSION,你必须用 session_start(); 开始一个会话; .因此,您可以做的是创建一个文件,在其中将所有 PHP 代码放入 session_start 开头,并将该文件包含在所有 HTML 文件中:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多