2011-04-14 109 views

回答

3

嗯,你可以對這個問題的其他反應看,有很多不同的方式來做到這一點。問題在於,一旦數據在mysql中,你想要做什麼?

1)如果你想讓數據以某種方式存儲在mysql中,並且數據將被某人查看,但不需要向用戶顯示,那麼webform可能是一種方法。它使您可以輕鬆創建人們可以輸入數據的表單,以及哪個特權用戶可以在線查看結果或通過將文件中的響應下載。 Webform特別適合於設置調查和其他形式,您只希望每個用戶填寫一次。 2)如果你想讓人們回答表單中的問題,然後在網站上顯示結果作爲數據,尤其是如果你想在視圖中顯示結果,那麼用cck創建一個節點類型,允許人們用他們的答案創建節點。確保每個用戶創建一次節點會更棘手一些,但是一旦創建完成,就可以用現有工具以多種不同方式顯示它們。 3)如果你需要表單輸出到你創建的或者已經給你的特定表中,那麼最好扣下來學習Form API並自己構建代碼。 Webform和CCK爲自己的用途創建表,如果您使用的是現有系統,那麼這些表不起作用。

1

您也可以嘗試webform模塊。它非常符合您的需求

1

如果您只需要幾個字段就可以使用cck模塊並創建包含這些字段的內容,爲所有用戶設置權限創建內容。 使用views模塊可以創建所有創建的列表。

cck

Views

+0

CCK是有限的內容(節點)。 Q不提內容,只是一種形式。 – berkes 2011-04-14 12:56:06

0

雖然很多答案使用網絡表單模塊,編碼自己的表單並不難,節省你安裝你不需要mkodule建議。 (更少的代碼和更少的數據表是一件好事。)

要在drupal中創建一個帶有5個文本字段的表單,允許用戶輸入數據,然後單擊提交按鈕並將其保存數據到一個MySQL數據庫表:

假設mymodule是你的模塊的名稱...

// shows the form 
mymodule_myform($form, &$form_state) { 
    for ($i = 0; $i < 5; $i++) { 
     $form["field_$i"] = array(
      '#type' => 'textfield', 
      '#title' => t('textfield @i', array('@i' => $i)) 
     ); 
    } 

    $form['submit'] = array('#type' => 'submit', '#value' => t('Submit')); 
} 

// validate input 
mymodule_myform_validate($form, &$form_state) { 
} 

// save the input to the database 
mymodule_myform_submit($form, &$form_state) { 
    $values = array(); 
    for ($i = 0; $i < 5; $i++) { 
     $values("field_$i_value" = strip_tags($form_state['values']['field_$i'])); 
    } 
    flat_val = implode(',', $values); 
    $sql = "INSERT INTO {table} (field_0_value, field_1_value, field_2_value, field_3_value, field_4_value) VALUES (%s)" 
    $res = db_query($sql, $flat_val); 
    drupal_set_message("Thank you for your submission.", 'status'); 
}