2011-07-04 71 views
0

我一直在这个问题上一整天都陷入困境。帮助将不胜感激:PHP - 页面刷新表单提交

我有一个'编辑'页面。

当有人去编辑窗体时,我已经声明我的变量是顶部的,以便制作“粘性”单选按钮。

我已经成功提交了,但是如果我回到带有表单操作的“confirm.php”,刚刚提交的内容就不会显示在页面上。

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

<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); 


    } 
?> 

我需要重定向到确认页面,或者用更新内容显示表格。 我被卡住了,我该如何做这项工作?

感谢,

+0

基本上,您有编辑页面,用户在哪里更新表格的编辑和更新页面?我对吗? – dpp

+0

自贴页面几乎不是最好的解决方案。使“控制器”类型的页面接受您的输入并重定向到“查看”类型页面以显示需要显示的内容。你不需要成为一个纯粹的MVC类型的系统,这样做很好理解或工作良好,你永远不会有按钮问题。 –

回答

0

如果你做的“编辑内容”和“更新表”在同一页上,并显示在不同的页面结果,你会失去所有已发布数据的。要将结果显示到另一个页面,您可以采用以下任一方法:

  1. 将发布的数据存储到会话变量中,以便您可以将它们检索到其他页面。

  1. 商店你刚才更新到会话变量记录的ID,然后到另一个页面,使用会话变量从数据库中检索数据,然后显示出来。
+0

我知道会话变量偶尔会用到,但它们几乎不是最好的解决方案。如果你的应用程序有一个数据库,然后用它来存储需要存储的任何需要,并引用它而不是会话变量。会话总是在某个时间到期,最终会导致一个糟糕的结局。 –

+0

@Night Owl,我也在做同样的事情,我的意思是一个控制器或事件处理程序页面。 joolz84想要发生的是获得更新的数据,我的第一个解决方案肯定不是首选,但我认为第二个解决方案是适用的。我认为joolz84不使用MVC。如果你有更喜欢的答案,那就说出来。 – dpp