PHP-表单提交时重新加载页面

PHP-表单提交时重新加载页面,php,forms,sticky,Php,Forms,Sticky,我整天都被这个问题困扰着。非常感谢您的帮助: 我有一个“编辑”页面 我已经在上面声明了我的变量,以便在有人去编辑表单时生成“粘性”单选按钮 我成功地提交了它,但是如果我用表单操作返回到“confirm.php”,那么刚刚提交的内容不会显示在页面上 如果我使用PHP_SELF,则to表单中的内容将恢复到编辑之前的状态,但表已更新 <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>"> <!--

我整天都被这个问题困扰着。非常感谢您的帮助:

我有一个“编辑”页面

我已经在上面声明了我的变量,以便在有人去编辑表单时生成“粘性”单选按钮

我成功地提交了它,但是如果我用表单操作返回到“confirm.php”,那么刚刚提交的内容不会显示在页面上

如果我使用PHP_SELF,则to表单中的内容将恢复到编辑之前的状态,但表已更新

<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">

    <!-- ---------------------- -->
    <!-- RSVP SELECT -->
    RSVP:<br />
    <input type="radio" name="guestAccept" id="accept" value="yes"
    <?php 
        if($rows['guestAccept'] == 'yes'){
            echo 'checked="checked" ';
        }?>
    >Accepts with pleasure<br />

    <input type="radio" name="guestAccept" id="decline" value="no"
    <?php
        if ($rows['guestAccept'] == 'no'){
            echo 'checked="checked" ';
        }?>
    >Declines with regret<br />

    <br />

    <!-- ---------------------- -->
    <!-- MEAL SELECT -->
    <div id="mealSelect">
        Meal:<br />
        <input type="radio" name="guestMeal" value="fish"
        <?php
            if ($rows['guestMeal'] == 'fish'){
                echo 'checked="checked" ';
            }?>
        >Grilled Wild Pacific Salmon<br />
        <input type="radio" name="guestMeal" value="beef"
        <?php
            if ($rows['guestMeal'] == 'beef'){
                echo 'checked="checked" ';
            }?>
        >Roasted Beef Tenderloin<br />
        <input type="radio" name="guestMeal" value="veg"
        <?php
            if ($rows['guestMeal'] == 'veg'){
                echo 'checked="checked" ';
            }?>
        >Vegetarian Risotto<br />
        <br />
    </div>

    <!-- ---------------------- -->
    <!-- SUBMIT -->
    <input type="submit" name="submit" id="btnSubmit" value="Submit" />
</form>

<a href="confirm.php">Go Back</a>

<?php
    // Close WHILE LOOP
    }

    // checks to see if submit button was pressed
    if(isset($_POST['submit'])){

        $query = "UPDATE guest SET guestMeal = '$guestMeal', guestAccept = '$guestAccept' WHERE id = $id";
        mysql_query($query);


    }
?>

如果您在同一页上执行“编辑内容”和“更新表”操作,并在另一页上显示结果,您将丢失所有发布的数据。要将结果显示到另一个页面,可以采用以下任一方式:

  • 将发布的数据存储到会话变量中,以便您可以将它们检索到另一个页面
  • 将刚刚更新的记录的ID存储到会话变量,然后存储到另一个页面,使用该会话变量从数据库检索数据,然后显示它们

  • 基本上,您有编辑页面,用户在其中执行编辑和更新页面,您在其中更新您的表?我说的对吗?自传页面几乎从来都不是最好的解决方案。使“控制器”类型页面接受您的输入并重定向到“查看”类型页面以显示需要显示的内容。你不需要是一个纯MVC类型的系统,这样做才有意义或工作良好,你永远不会有后退按钮的问题。我知道会话变量偶尔会被使用,但它们几乎从来都不是最好的解决方案。如果您的应用程序有一个数据库,那么使用它来存储需要存储的内容,并引用该数据库而不是会话变量。会话总是在某个时候过期,最终会导致糟糕的结局。@Night Owl,我也在做同样的事情,我的意思是,一个控制器或事件处理程序页面。joolz84想要的是获得更新的数据,我的第一个解决方案当然不是首选方案,但我认为第二个方案是适用的。我认为joolz84没有使用MVC。如果你有更喜欢的答案,那就说出来。