问题描述
|
如何在drupal中创建一个包含大约5个文本字段的表单,允许用户输入数据,然后单击Submit按钮并将其保存以将所有数据保存到MysqL数据库表中?
解决方法
好吧,正如您从对该问题的其他回答中所看到的,有很多不同的方法可以做到这一点。问题就变成了,一旦数据进入mysql,您要如何处理它。
1)如果您想以某种方式将数据存储在mysql中,并且该数据将由某人进行审核,但通常不需要向用户显示,那么webform可能是一种解决方法。它使您可以轻松地创建供人们输入数据的表格,然后特权用户可以在线或通过将响应下载到文件中来查看结果。 Webform特别适用于设置调查表和其他仅需要每个用户填写一次的表单。
2)如果您希望人们回答表单中的问题,然后将结果作为数据显示在您的网站上,特别是如果您希望在视图中显示结果,则使用cck创建节点类型,并允许人们创建节点及其答案。确保每个用户一次创建一个节点会有些棘手,但是一旦创建了一个节点,就可以使用现有工具以多种不同的方式显示它们。
3)如果您需要表单输出进入已创建或已提供给您的特定表中,那么最好扎根并学习Form API并自己构建代码。 Webform和CCK创建供自己使用的表,如果您使用的是现有系统,则该表不起作用。
,我强烈邀请您阅读有关表单API的页面,这是Drupal管理表单的强大工具。
,您可以使用Drupal Webform模块。
如果要创建自定义表单,可以创建自己的模块。
此链接将为您提供帮助。
http://drupallearn.blogspot.com/p/forms-in-drupal.html
,您也可以尝试使用webform模块。它几乎可以满足您的需求
,如果只需要几个字段,则可以使用cck模块并创建包含这些字段的内容,请为所有用户设置创建内容的权限。
使用views模块可以创建所有创建的列表。
ck
观看次数
,尽管很多答案都建议使用webform模块,但是编写自己的表单并不难,并且可以节省安装不需要的mkodule的麻烦。 (减少代码并减少数据库中的表是一件好事。)
要在具有大约5个文本字段的drupal中创建一个表单,允许用户输入数据,然后单击Submit按钮并将其保存以将所有数据保存到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\');
}