2011-04-14 110 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'); 
}