Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP在同一页面上使用表单提交更新先前的HTML输出_Php_Forms - Fatal编程技术网

如何使用PHP在同一页面上使用表单提交更新先前的HTML输出

如何使用PHP在同一页面上使用表单提交更新先前的HTML输出,php,forms,Php,Forms,我正在处理一个表单提交页面(POST),该页面使用htpasswd文件的file_get_contents()显示所有当前用户(作为表单开头的复选框对象),并允许用户使用exec()函数更新这些用户。除了在用户通过表单提交按钮提交更改后,页面上显示的用户列表不会更新之外,所有这些都正常工作。我知道发生这种情况的原因是,更新结果的代码发生在结果的回显之后 所以我的问题是:是否有任何方法可以修改/更新(使用PHP)在实际函数执行之前发生的输出?我已经包括了我的基本代码结构,以帮助可视化我的情况: f

我正在处理一个表单提交页面(POST),该页面使用htpasswd文件的file_get_contents()显示所有当前用户(作为表单开头的复选框对象),并允许用户使用exec()函数更新这些用户。除了在用户通过表单提交按钮提交更改后,页面上显示的用户列表不会更新之外,所有这些都正常工作。我知道发生这种情况的原因是,更新结果的代码发生在结果的回显之后

所以我的问题是:是否有任何方法可以修改/更新(使用PHP)在实际函数执行之前发生的输出?我已经包括了我的基本代码结构,以帮助可视化我的情况:

form.php:

<form method="post">

<?php
    //Code to read htpasswd file, then output results as form input checkboxes
?>

<select name="action">
    <option value=""></option>
    <option value="delete"></option>
    <option value="change"></option>
    <option value="create"></option>
</select>

<input type="submit">

<?php
    if($_POST['action'] !== '')
    {
        switch($_POST['action'])
        {
            case delete:
            //run exec() command to delete each user

            case change:
            //run exec() command to change pw for each user

            case create:
            //run exec() command to create a user
        }
    }
?>


如果PHP无法做到这一点,Javascript能完成这项工作吗?

在j08691和Ariane的帮助下,我能够通过交换前面提到的代码获得所需的结果:

<form method="post">

<?php
    if(isset($_POST['action']) && $_POST['action'] !== '')
    {
        switch($_POST['action'])
        {
            case delete:
            //run exec() command to delete each user

            case change:
            //run exec() command to change pw for each user

            case create:
            //run exec() command to create a user
        }
    }
?>

<?php
    //Code to read htpasswd file, then output results as form input checkboxes
?>

<select name="action">
    <option value=""></option>
    <option value="delete"></option>
    <option value="change"></option>
    <option value="create"></option>
</select>

<input type="submit">


将最后一个PHP代码块放在输出列表的第一个块之前不起作用吗?基本上,您希望在不重新加载页面的情况下使用新提交的信息更新页面?如果是这样,您需要研究AJAX。(我认为最简单的方法是使用Jquery。)还是新加载的页面不包含新信息?然后,应该通过改变PHP代码的顺序来解决这个问题,以确保所有的处理都在显示任何内容之前完成。简单地说,交换PHP代码块非常有效!谢谢j08691和阿丽亚娜。没有办法将评论标记为答案吗?对不起,我是新来的。。。