2010-09-01 33 views
1

我有兩個提交按鈕的表單。這是一個很好的方式來保存提交HTML表單時的字段值?

用戶填寫現場-A和點擊提交。

做到這一點,一些輸入字段將數據填充。

是第一次提交後,場上-A值應該不會消失。

我們如何保持第一提交後該值?

我們是否應該,在現場屬性的值,地點:

value="<?php echo isset($_POST['fieldA'])) ? $_POST['fieldA'] : ''; ?>"

表單提交給自己。

更新 - 其他細節: 這是將有兩個在同一頁面上提交按鈕的形式(排序的發言)。 提交按鈕A - 將根據輸入字段獲取一些數據,並填寫該表單上的其他輸入字段。 提交按鈕B - 一旦表單被填充,它將使用所有數據來做另一個提交。

這是一個非常簡單的情況下,沒有框架是在這裏發生。不過,我確實有這種MVP結構。

由於提前, MEM

+1

你爲什麼不把這些變化我nto $ _SESSION? – fabrik 2010-09-01 12:04:12

+0

您的表單是否提交給SELF? – 2010-09-01 12:06:37

+0

我不知道。我爲什麼要那麼做? – MEM 2010-09-01 12:07:06

回答

2

一般來說,這樣的事情使用2種形式完成,沒有人。
和GET方法,而不是POST。至少對於第一種形式。
但是,因爲你不能問一個問題,所以不可能給你一個答案。

在這裏你去:

的index.php

<form action=edit.php>Enter name: <input name="name"><input type=submit></form> 

edit.php

<? $row = dbget("row","SELECT * FROM domains WHERE name = %s",$_GET['name']); ?> 
<form method="POST" action="save.php"> 
Edit data for <?=htmlspecialchars($row['name'])?>:</br> 
NS: <input name="ns" value="<?=htmlspecialchars($row['ns'])?>"><br> 
Another: <input name="another" value="<?=htmlspecialchars($row['another'])?>"><br> 
<input type="hidden" name="name" value="<?=htmlspecialchars($row['name'])?>"><br> 
<input type=submit> 
</form> 

save.php

做你通常做保存信息

+0

Col. Shrapnel:現在,我確實有一個帶有兩個提交按鈕的表單。第一個叫做getDomainInfo,另一個叫saveDomainInfo。 1)用戶將輸入一個域名; 2)getDomainInfo將獲取該域的hostAddr和Ns,並將它們放在另一個輸入字段上; 3)一旦他們在輸入字段,我們可以改變它們。 4)在我們更改這些值後,將使用ALL,我們將提交所有這些值。 你仍然相信GET和兩種形式是這樣做的正確方法嗎?如果是這樣,爲什麼? 非常感謝。 MEM – MEM 2010-09-01 14:56:16

+0

@MEM肯定這是在這種情況下的確切解決方案。平常和自然。我這樣做了很多次。你看到了什麼? – 2010-09-01 14:59:06

+0

爲什麼很簡單。我從GET和POST方法的目的出發。 GET用於*檢索*數據和POST - 用於保存。因此,GET檢索和POST保存。我只有一個問題。你爲什麼讓編輯域名?它不應該是隻讀值嗎?編輯域名的目的是什麼? – 2010-09-01 15:02:39

1

我會存儲這些值到$ _SESSION,爲用戶FABRIK說。這樣它們可以存儲在整個表單提交過程中(假設它是多個頁面)並在最後一次全部發布。

假設你有某種提交系統與「下一步」按鈕進入到下一組的形式,用在session_start()和$ _SESSION肯定是最好的方法。更多信息可以在這裏找到,或各種教程sites--

http://php.net/manual/en/reserved.variables.session.php

+1

我會考慮在多步表單上;)感謝使用$ _SESSION和多步表單之間的連接 – MEM 2010-09-01 13:44:29

1

這是確定這樣做與$ _ POST,有些人不喜歡的三元運算符但對我來說工作得很好。雖然,有更好的方法來處理使用O.O.P的表格。您可以創建一個管理您的表單的類,並將數組傳遞給該類的構造函數(最終您可以傳遞$ _POST),並且該類將根據提交的信息創建表單。你甚至可以使用相同的類來確定你的表格

我沒有看到需要使用$ _SESSIONS,因爲這不是你需要在整個會話期間保存的信息。

+0

不確定它是否是一個正確的答案真的,我同意,但我的同意是不夠的。但是,這只是我們所擁有的。 – MEM 2010-09-01 13:42:17

1

試試這個:

<?php 
    $fieldA = (isset($_POST['fieldA']) ? $_POST['fieldA'] : '') 
?> 
// and in your form 
<INPUT type="text" name="fieldA" id="fieldA" value="<?=fieldA?>" /> 

正如你所說,這應該工作。

+0

您是否認爲這些驗證應該停留在我們的html表單元素之外? – MEM 2010-09-01 13:24:28

+0

<?=某種快捷方式?就像回聲?SOrry,不能google。不知道名字和谷歌「php <?=」是無用的。:/ – MEM 2010-09-01 13:29:25

+1

是的,這樣更清晰。是的,對你的問題。 – 2010-09-01 13:33:23

相關問題