2012-08-25 23 views
0

我試圖建立我的網站上的申請表,其中有一個頁面(parent.php)和另一頁上一個較小的形式(child2.php),當上主大申請表的值用戶填寫他們的一些細節並提交更小的表格,他們被帶到更大的表格中,他們輸入的詳細信息已經出現在大表格的相應文本框中,旁邊有一些額外的表格供他們填寫(如果這樣做感!)傳遞如果設置

我能得到它的工作在第2頁上的文本框第一頁上顯示匹配文本框的值,但只有當值被設定。由於用戶可以通過較小的表單或通過直接訪問來訪問主應用程序,或者直接訪問它,我需要這樣做,如果設置了該值,則會顯示設置值,並且也將是輸入數據庫的值,或者值不是從較小的表單中預先設置的,用戶可以將他們的信息輸入到主表單中,這是發送到數據庫的內容。我想我可能需要使用ifisset,並試圖這樣做,但是沒有辦法。

對於凌亂的代碼和設置文本框的道歉,因爲它們只是爲了測試這一點,我仍然掌握所有這一切,並會很感激,如果任何人都可以幫助我/讓我知道如果我在正確的軌道/完全關閉。提前致謝!

1(parent.php)

<form action="child2.php" method="post" class="validate"> 
    <div> 
    <input class="tb" type="text" name="fName" placeholder="first name" id="fName"  value="<?php $fName ?>" required/><br/> 
    <br/> 
    <input class="tb" type="text" name="sName" placeholder="surname" id="sName" value="<?php $sName ?>" required/><br/> 
    <br/> 
    <input class="tb" type="email" name="email" required placeholder="email address" id="email" value="<?php $email ?>" required/> 
    <br/> 
    <input class="tb" type="address" name="address" placeholder="address" value="<?php $address ?>" id="address" /> 
    <br/> 


    <input id="submit" name="submit" type="submit" value="Submit"> 
    </div> 
    </form> 

第2頁(child2.php)

<?php 
    function renderForm($fName, $sName, $email, $address){ 
    ?> 


<form action="" method="post" class="validate"> 

<label class="label">first name</label><input class="tb" type="text" id="fName"  name="fName" value="<?php if (isset($fName)) { echo $fName = $_REQUEST['fName'];} else { echo "first name"; }?>"/> 
</br> 
<label class="label">surname</label><input class="tb" type="text" id="sName" name="sName" value="<?php if (isset($sName)) { echo $sName = $_REQUEST['sName'];} else { echo "surname"; }?>"/> 
</br> 
<label class="label">email</label><input class="tb" type="email" id="email" name="email" value="<?php if (isset($email)) { echo $email = $_REQUEST['email'];} else { echo "email"; }?>"/> 
</br> 
<label class="label">address</label><input class="tb" type="text" id="address" name="address" value="<?php if (isset($address)) { echo $address = $_REQUEST['address'];} else { echo "address"; }?>"/> 
</br> 

回答

0

你要尋找的是$_SESSION變量,直到用戶關閉瀏覽器或直到會話e,它纔會保持活動狀態xpires(我認爲默認的PHP配置時間是24分鐘..?)。這比將它們存儲在數據庫中用於臨時目的更有效。

所以,你可以設定$_SESSION['fName'] = $_POST['fName'];等變量,然後用echo $_SESSION['fName'];後給他們打電話等

要利用你將需要<?php session_start(); ?>在你的頁面的開始(使用任何HTML之前)會話變量

+0

khanahk,謝謝您的指導。另外,如何確定是否已經設置了上一頁中的值,我是否正確:value =「<?php if(isset($ email)){echo $ email = $ _REQUEST ['email' ];} else {echo「email」;}?>「? – rosewit

+0

另外,請原諒我在這裏的無知,但是如果我已經可以將值從一頁傳遞到其他頁面,那麼是否有必要使用SESSION?有沒有辦法使用我已經有的代碼,只是添加了一些東西,可以讓我確定文本框的值是否已經在前一頁中設置或沒有?再次感謝。 – rosewit

+0

如果您使用POST方法,那麼您可以使用isset($ _ POST ['email'])等來檢查用戶在提交表單後是否將任何內容放入字段中。 $ _POST是POST表單數據的超全球性; $ _GET是GET表單數據的超全球性。如果您希望能夠在延長的時間內使用數據,而不是僅在用戶提交表單後立即使用數據,則$ _SESSION會更好。用戶名等適用於$ _SESSION。 – khaverim

0

正如khanahk所建議的那樣,使用SESSION變量可以完成您的工作。您所考慮的解決方案的問題在於,只要您將值從一個頁面傳遞到另一個頁面,就可以處理這個問題,這一點太過於混亂。

所以,你應該相反,你應該使用這樣的事情

session_start(); 

$email = $_SESSION['email']; 

<label class="label">email</label><input class="tb" type="email" id="email" name="email" value="<?php echo $email; ?>"/>