2012-06-25 105 views
2

我有兩種形式,以及兩個不同的提交按鈕,用於一個頁面(用於將職員添加到公司db的頁面)。兩種形式,一頁

第一次提交涉及提交用戶名(通過命令行程序自動填寫名稱和教職員工)。很顯然,我想保留這些信息並在填寫第二種形式所需的信息時向用戶顯示。這工作正常。

問題是如果第二種形式出現錯誤。添加失敗並顯示一條錯誤消息,但是從第一個表單中刪除了所有信息。

會話變量,如果第一種形式(沒有錯誤)提交如下設置:

$_SESSION['name'] = $info['displayName']; 
$_SESSION['faculty'] = $info['ou']; 
$ownerId = trim(mysql_prep($_POST['ownerId'])); 
$_SESSION['ownerId'] = $ownerId; 

但是,當這些變量被消滅,如果第二種形式提交。我的理解是,這是因爲第一種形式是而不是技術上已提交了。但是,話又說回來,是不是會話變量的點 - 不會被消滅?

編輯:也許這將是有益的補充說,我取消所有的會話變量,但只有第二種形式提交沒有錯誤。雖然我不認爲這是非常相關的

+0

您是否確定開始會話? –

+0

是的!在頂部 – nv39

+0

我覺得第二次調用這個頁面的時候,這些值從表格中是空的,所以沒有什麼會進入會話 - 只是猜測 – codingbiz

回答

3

有2種方法我能想到的

if($POST['form_name'] == 'form1') 
{ 
    //set my session variables 
} 
else //for the second form 
{ 
    //do something else 
    //then session is intact 
} 

我曾經把一個隱藏字段在我的形式存儲形式的名稱。有些使用提交按鈕的名稱。

另一種方法是重新填充其他形式我不使用一個按鈕,這兩個形式

<form name="form1" action="POST" action="xxx"> 
    <input type="text" values="<?php print($_POST['firstform_val_1']) ?>" name="val_1" /> 
</form> 


<form name="form2" action="POST" action="xxx"> 
    //these hidden fields preserve the formal values and make sure they are reposted in this second form 
    <input type="hidden" name="firstform_val_1" value="<?php print($_POST['firstform_val_1']) ?>" /> 
    <input type="hidden" name="firstform_val_2" value="<?php print($_POST['firstform_val_2']) ?>" /> 

    <input type="text" name="secondform_val1" /> 
    <input type="submit" name="form2" /> 
</form> 

這是觀念還在想着如何做到這一點。我剛剛從樓上看到了這個,沒有經過測試。在第一種形式中,前值由第二種形式

好運

+0

然後你必須檢查是否有一個帖子,否則$ _POST變量將是空的,你會得到'index not found'類似的錯誤。當用戶第一次訪問該頁面時會發生這種情況。爲了防止這種情況發生,你可以使用'print' <?php print(@ $ _ POST ['firstform_val_1'])?>''來抑制錯誤。注意'@'符號? – codingbiz

0

的隱藏字段重複的值重新填充如果一個PHP頁面所產生的形式,你可以使用下面的腳本自動填充之前提交的任何字段。

已啓用短標籤;

<input type="text" name="firstName" value="<?=isset($_POST['firstName'])?$_POST['firstName']:'';?>" ></input> 

沒有短標籤;

<input type='text' name="firstName" value=" 
<?php 
    $value=isset($_POST['firstName'])?$_POST['firstName']:''; 
    echo($value); 
?> 
"></input>