【发布时间】:2011-04-14 09:54:28
【问题描述】:
如何在drupal中创建一个大约有5个文本字段的表单,允许用户输入数据,然后单击提交按钮并将所有数据保存到mysql数据库表中?
【问题讨论】:
如何在drupal中创建一个大约有5个文本字段的表单,允许用户输入数据,然后单击提交按钮并将所有数据保存到mysql数据库表中?
【问题讨论】:
我强烈邀请您阅读this page about the form API,这是 Drupal 管理表单的强大工具。
【讨论】:
嗯,正如您从对这个问题的其他回答中看到的那样,有很多不同的方法可以做到这一点。问题变成了,一旦数据在 mysql 中,你想对它做什么。
1) 如果您想以某种方式将数据存储在 mysql 中,并且数据将由某人查看但通常不需要向用户显示,那么 webform 可能是要走的路。它允许您轻松创建一个表单,人们可以在其中输入数据,然后特权用户可以在线查看结果或通过下载文件中的响应来查看结果。网络表单特别适合设置调查和其他您只希望每个用户填写一次的表单。
2) 如果您希望人们回答表单中的问题,然后将结果作为数据显示在您的网站上,尤其是如果您希望在视图中显示结果,则使用 cck 创建一个节点类型,并允许人们用他们的答案创建节点。确保每个用户创建一次节点有点棘手,但是一旦创建它们,就可以使用现有工具以多种不同的方式显示它们。
3) 如果您需要将表单输出输入到您创建或已提供给您的特定表中,那么最好是认真学习Form API 并自己构建代码。 Webform 和 CCK 创建供自己使用的表,如果您使用的是现有系统,这将不起作用。
【讨论】:
您可以使用 Drupal 网络表单模块。
如果您想制作自定义表单,您可以创建自己的模块。 此链接将对您有所帮助。
【讨论】:
您也可以尝试webform 模块。它几乎可以满足您的需求
【讨论】:
虽然很多答案都建议使用 webform 模块,但编写自己的表单并不难,并且可以节省您安装不需要的 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');
}
【讨论】: