单击多次提交按钮

时间:2011-01-16 17:36:00

标签: php

我遇到了一个我无法解决的问题。我的观点是“点击”我的sybmit按钮,每次增加一个计数器,而这个计数器达到10.这是第一次有效,但就是这样! 我的测试代码如下:

<form name="testForm" method="post">
<?php $cnt=0; ?>

<input type="submit" name="next" id="next" value="NEXT"/>

<?php
  if(isset($_POST['next'])){
    if($cnt< 10){
      echo $cnt.' --> ';
      $cnt++;
      echo $cnt;
    }
  }
?>
</form>

仅0 - &gt;每次打印1次......请帮助!!

由于

4 个答案:

答案 0 :(得分:2)

您的计数器未在页面加载之间保存。您需要做的是将计数器保存到$_SESSION变量

答案 1 :(得分:2)

您应该使用会话http://www.php.net/manual/en/book.session.php

<?php session_start()?>
<form name="testForm" method="post">
<?php 
    if (empty($_SESSION['cnt'])){
        $_SESSION['cnt'] = 0;
    }
?>

<input type="submit" name="next" id="next" value="NEXT"/>
<input type="submit" name="clear" id="clear" value="CLEAR"/>

<?php
    if(isset($_POST['next'])){
        if($_SESSION['cnt']< 10){
            echo $_SESSION['cnt'].' --> ';
            $_SESSION['cnt']++;
            echo $_SESSION['cnt'];
        }
    }
    if(isset($_POST['clear'])){
        $_SESSION['cnt'] = 0;
    }
?>
</form>

答案 2 :(得分:1)

您的PHP代码正在服务器上执行,而表单则显示在Web浏览器中。每次用户点击“提交”时,表单都会提交给您的服务器,这会将$ cnt变量设置为零。

你应该做的是将计数放入表格中,例如:

<form name="testForm" method="post">

<?php $cnt = isset($_POST["cnt"]) ? $_POST["cnt"] : 0; ?>
<?php
  if(isset($_POST['next'])){
    if($cnt< 10){
      echo "<!-- ".$cnt.' --> ';
      $cnt++;
      echo $cnt;
    }
  }
?>
<input type="hidden" name="cnt" value="<?php echo $cnt;?>" />
<input type="submit" name="next" id="next" value="NEXT"/>
</form>

这样,当前计数将成为表单的一部分。当用户点击“提交”时,他们会提交当前计数以及他们提交表单的事实。然后,您的服务器可以获取当前计数,增加它并使用新计数发回表单。

答案 3 :(得分:0)

你必须使用会话。首先设置会话变量初始值1,如果它尚未初始化。初始化后,从第二次点击开始,每次点击都会计算+1,因为它将满足else语句

<?php
session_start();
?>
<html>
    <head></head>
    <body>
        <form method="post" action="submit.php">
            <input type="submit" name="count" value="Start counting" />
        </form>
        <?php
        if(isset($_POST['count'])){
            if(!($_SESSION['count'])){
                $_SESSION['count'] = 1;
            }else{
                $count = $_SESSION['count'] + 1;
                $_SESSION['count'] = $count;
            }
        }
        echo $_SESSION['count'];
        ?>
    </body>
</html>