2014-09-21 54 views
0

好的。所以我使用Sessions來存儲數據,因爲我正在製作一個多頁面表單。事情是,我需要一個後退按鈕。我有一個提交按鈕,將用戶帶到下一頁並將數據存儲到會話中,但我需要在提交按鈕旁邊有一個後退按鈕,以防因任何原因造成混亂。無論如何要用PHP製作一個後退按鈕,在顯示他們輸入的數據的同時將他們帶回上一頁。繼承我的一頁的代碼。 另外,我已經嘗試使用history.go,但只適用於一個頁面。PHP會話返回按鈕?

<?php 

//let's start the session 
session_start(); 

//now, let's register our session variables 
$_SESSION['opinion1'] = 'opinion1'; 
$_SESSION['choice1'] = 'choice1'; 

//finally, let's store our posted values in the session variables 
$_SESSION['opinion1'] = $_POST['opinion1']; 
$_SESSION['choice1'] = $_POST['choice1']; 

?> 

<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link href='http://fonts.googleapis.com/css?family=Playball' rel='stylesheet' type='text/css'> 
<link rel="stylesheet" href="bootstrap.css"> 
<link rel="stylesheet" href="main.css"> 
<link rel="stylesheet" type="text/css" href="engine1/style.css" /> 
<script type="text/javascript" src="engine1/jquery.js"></script> 
<script src="jquery.cycle2.js"></script> 
<title>Untitled Document</title> 
</head> 

<body> 

<div class="nav"> 
    <div class="container"> 
     <h1 class="pull-left">Securing the Future of Village Walk</h1> 
     <div class="pull-right"> 
     <ul class="nav nav-pills"> 
      <li class="active"><a href="#">home</a></li> 
      <li><a href="#">about</a></li> 
      <li><a href="#">contact</a></li> 
     </ul> 
     </div> 
    </div> 
</div> 

<div class="ammendment"> 
    <div class="container"> 
     <form method="post" action="page4_form.php"> 
      <textarea id="opinion2" name="opinion2" value=""></textarea> 
      <label for="Yes">Yes</label> 
      <input type="radio" name="choice2" value="Yes"> 
      <label for="No">No</label> 
      <input type="radio" name="choice2" value="No"> 
      <label for="Neither">Neither</label> 
      <input type="radio" name="choice2" value="Neither"> 
      **I NEED BACK BUTTON HERE** 
      <input type="submit" value="Next"> 
     </form> 
    </div> 
</div> 


</body> 
</html> 
+0

只需檢查輸入是否保存了有效的會話值。如果是這樣,請相應地更新表單字段。 – 2014-09-21 18:59:25

+0

但我怎麼做一個後退按鈕,而不必每次都重新提交表單? – user1585549 2014-09-21 19:09:29

+0

任何與CSS有關的事情?我不這麼認爲。 – 2014-09-21 19:18:43

回答

0

你可以只添加一個額外的形式,像這樣:

<form action="pageX.php" method="post> <input name="submitBackButton" type="submit" value="Back"> </form>

這可以PHP中被檢測爲正常的GET/POST領域:

<?php 
if (isset($_POST['submitBackButton'])) 
{ 
    // Do required actions here 
} 
+0

但是你能爲我做出必要的行動嗎?我不擅長PHP。 – user1585549 2014-09-21 19:11:26

+0

也是這樣工作,而不需要用戶每次都重新提交表單? – user1585549 2014-09-21 19:12:10

+0

你想要採取什麼行動? 而上面的代碼需要一個表單提交/頁面請求。如果你想在沒有表單重新提交的情況下'動態'處理它,那麼你將不得不考慮客戶端腳本 - javascript。 – 2014-09-21 19:16:41

1

我先以便於您將輸入的數據與輸入的頁面進行關聯的方式組織會話數據。

一種可能是安排在一個陣列會話數據:

$_SESSION['formData'] = array(
    array(... data for step 1), 
    array(... data for step 2), 
    array(... data for step 3), 
); 

所以$formData[0]將舉行在步驟1中輸入數據等

爲按鈕,另一提交就足夠了:

<input type="submit" value="Back" /> 

然後,你將不得不確定你要回到哪個頁面;您可以通過發送帶有當前頁碼的隱藏字段來實現。

<form method="post" action="page_form.php"> 
    <input type="hidden" name="page" value="X" /> 

這裏需要注意的一件事是,服務器端進程不會再是每頁一個;相反,只有一個page_form.php,您必須確定操作和要移至的頁面(儘管您可以每頁使用一個並在其中設置正確的操作,但對於任何問題總是有幾種解決方案):

<?php 
... 

$page = $_POST['page']; 
if (isset($_POST['Back'])) // Going back 
{ 
    $page -= 1; // Previous page requested 

    // Retrieve data from session 
    $data = $_SESSION['formData'][$page-1]; // $page-1 because of zero based array indexes. 

    ... 

    // Dynamically load the proper page processor. 
    // each pageX_form.php will know how to deal with the variable $data. 
    include "page{$page}_form.php" 
} 
else 
{ 
    $page += 1; // Next page requested 
    $data = $_POST; // In this case, the data is whatever was entered 
} 

當構建每個頁面的形式,你必須記住要與頁碼添加隱藏字段:

<form method="post" action="page_form.php"> 
    <input type="hidden" name="page" value="<?php echo $page; ?>" /> 

如果你想使用一個服務器端的過程中每頁,那麼你可以這樣做,而不是:

<form method="post" action="page<?php echo $page; ?>_form.php"> 

服務器端進程看起來不一樣,因爲您不必詢問頁碼;這將是隱含的。

+0

哦,好的。我想我明白了。所以技術上只有1頁,但窗體的其他部分是隱藏的?然後,當他們點擊下一個時,它會將他們帶到下一個隱藏頁面,反之亦然。那是對的嗎?此外,你認爲你可以幫我一個忙,並可能採取我的代碼和實施你的,我不太好用PHP – user1585549 2014-09-21 19:36:33

+0

不一定隱藏。 對於兩個步驟的輸入過程。你會有一個單獨的form_process.php開始會話,確定Back按鈕是否被按下,以及如答案中所示設置變量。 然後你會有其他兩個文件:form_part-1.php和form_part-2.php,你可以根據需要添加**。 至於你的要求:這實際上是我如何謀生。我很樂意幫助你,但我甚至不確定這種討論是否允許在這裏。 – 2014-09-21 19:51:10