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