2011-10-18 51 views
1

我在我的PHP表單上有兩個部分。一個部分允許輸入客戶信息(姓名,地址等),另一部分允許輸入客戶產品及其詳細信息(約15個文本框)並提交按鈕。用戶可以爲同一客戶輸入無限制的產品和詳細信息。我有兩張桌子。客戶表和Cust_Products表。所以我認爲我必須將表格提交給自己,並保留第一部分的數據並清除第二部分。實現此功能的最佳做法是什麼?將頁面提交給自己並允許輸入更多數據

+1

處理動態表單的最佳做法是使用Ajax **。 –

+0

@AndrejsCainikovs需要引用 –

+0

您可以將數據保存在會話變量中(因爲一些破壞性的用戶操作(例如頁面重新加載等可能會破壞他所輸入的數據)更安全)。或者使用AJAX(如你所建議的)。或者以某種方式存儲其他用戶的數據,因爲它是處理數據塊的最佳實踐(爲了安全和方便) – user973254

回答

1

那麼,你可以添加一個檢查,看看錶單是否已經提交給自己,並輸出適當的表單,注意沿途存儲發佈的值。

if (isset($_POST['submit'])) 
{ // product & details form 
} 
else 
{ // customer information 
} 
+0

謝謝。第一次我必須保存客戶和產品的詳細信息。我的保存邏輯應該在同一頁面上。對?你有什麼例子嗎? – nav100

+0

這將進入你需要的地方,以滿足你的需求。一個選項是隨時將數據存儲到會話中,然後在完成時將其轉儲到數據庫中。我會期待谷歌的這種方法。關於保存邏輯...如果您正在尋找將演示文稿與數據存儲區分開,那麼是的,它應該是分開的。 – espais

0

在第一次創建後,您可以將客戶ID存儲在會話中。如果您再次打開表單,則會檢查會話中的ID,如果已設置,則會顯示客戶的詳細信息和表單以添加其他產品。

如果沒有設置會話(或者用戶希望創建新的客戶:提供一個鏈接來重置會話中的ID),您可以提供創建客戶的表單。

0

給你的表格如下:

<input type="hidden" name="user_name" value="$_POST['user_name']"> 

這樣你就可以繼續使用相同的用戶名,如果你重新發布到相同的頁面,而無需進入這一切的時候用戶。

0

刪除對象時,我用這個來迫使用戶點擊刪除兩次,以確認他們真的刪除的東西,但我想它應該工作得非常好您的具體情況,以及

function yourmodule_FORM_ID($form, &$form_state) { 
    if(!isset($form_state['storage']['confirm'])){ 
     //this is where your first form goes 
    } 
    else{ 
     //this is the second form 
    } 
} 

function yourmodule_FORM_ID_submit($form, &$form_state) { 
    if(!isset($form_state['storage']['confirm'])){ 
     $form_state['storage']['confirm'] = TRUE; 
     $form_state['rebuild'] = TRUE; 
     //this is where the first form's submit would go 
     //you can stuff some info into $form_state if you need it 
    } 
    else{ 
     //this is where the second form's submit would go 
    } 
} 
相關問題