如何在php中停止循环并等待用户输入继续循环?

时间:2014-11-16 06:23:09

标签: php forms loops submit

是否可以在while或for中停止php循环并等待用户输入继续循环?

例如,我循环一个表单5次。 我希望每个表单在我提交表单后逐个显示,而不是所有5个表单一起出现

所有建议都非常感谢.. :)

2 个答案:

答案 0 :(得分:0)

这看起来像这样:

(这里我使用会话,所以如果提交一次,我每次都可以显示每个表格)

<?php

    session_start();

    if(isset($_POST['submit1']) && !empty($_POST['test1']))
        $_SESSION['form2'] = TRUE;

    if(isset($_POST['submit2']) && !empty($_POST['test2']))
        $_SESSION['form3'] = TRUE;

    echo '
        form1:
        <form action="" method="post">
            <input type="text" name="test1">
            <input type="submit" name="submit1" value="submit">
        </form>
    ';

    if(isset($_SESSION['form2']) && $_SESSION['form2']) {

        echo '
            form2:
            <form action="" method="post">
                <input type="text" name="test2">
                <input type="submit" name="submit2" value="submit">
            </form>
        ';
    }

    if(isset($_SESSION['form3']) && $_SESSION['form3']) {

        echo '
            form3:
            <form action="" method="post">
                <input type="text" name="test3">
                <input type="submit" name="submit3" value="submit">
            </form>
        ';
    }

?>

答案 1 :(得分:0)

PHP在服务器上执行,因此您在浏览器视口中看到的是脚本的输出,这是很久以前执行的。这意味着不会干扰while循环

但是,有一个解决方案可以解决您的问题。 首先是基于if-statements和会话

的输出
<?php

session_start();

// determine which form to display
if ($_REQUEST["form1"]) {
    $_SESSION["form"] = 1;
}
elseif($_REQUEST["form2"]) {
    $_SESSION["form"] = 2;
}
elseif($_REQUEST["form3"]) {
    $_SESSION["form"] = 3;
}

if($_SESSION["form"] >= 1) {
    echo ' Form 1 output ';
}
if($_SESSION["form"] >= 2) {
    echo ' Form 2 output ';
}
if($_SESSION["form"] >= 3) {
    echo ' Form 3 output ';
}

?>

第二种可能是jquery利用表单ID

<head>
    <script>
    $(document).ready(function() {
        $("#form1").submit(function(event) {
            // prevent default submitting and display the next form
        });
        $("#form2").submit(function(event) {
            // prevent default submitting and display the next form
        });
        // and so on
    });
    </script>
</head>