首页 文章

Drupal - 创建表单

提问于
浏览
1

如何在drupal中创建一个包含大约5个文本字段的表单,允许用户输入数据,然后单击提交按钮并将其保存到mysql数据库表中?

6 回答

  • 0

    您可以使用Drupal webform模块 .

    如果要创建自定义表单,可以创建自己的模块 . 此链接将帮助您 .

    http://drupallearn.blogspot.com/p/forms-in-drupal.html

  • 5

    您也可以尝试使用webform模块 . 它几乎满足您的需求

  • 1

    如果您只需要几个字段,则可以使用cck模块并创建包含这些字段的内容,为所有用户设置创建内容的权限 . 使用views模块可以创建所有创建的列表 .

    cck

    Views

  • 1

    好吧,正如你从其他对这个问题的回答中可以看到的那样,有很多不同的方法可以做到这一点 . 问题变成了,一旦它在mysql中,你想对数据做什么?

    1)如果你想以某种方式将数据存储在mysql中,并且数据将由某人审查,但不需要向用户显示,那么webform可能就是这样 . 它允许您轻松创建人们可以输入数据的表单,然后特权用户可以在线查看结果或通过在文件中下载响应来查看结果 . Webform特别适合设置调查和其他表单,您只希望每个用户填写一次 .

    2)如果您希望人们回答表单中的问题,然后将结果显示为您网站上的数据,特别是如果您想在视图中显示结果,那么使用cck创建节点类型,并允许人们创建节点及其答案 . 这有点棘手,确保每个用户创建一次节点,但一旦创建它们,就可以使用现有工具以多种不同方式显示它们 .

    3)如果你需要表单输出进入一个特定的表,你可能最好按下并学习Form API并自己构建代码 . Webform和CCK为自己使用创建表,而不使用现有系统 .

  • 2

    我强烈邀请您阅读this page about the form API,这是Drupal管理表单的强大工具 .

  • 3

    尽管很多答案建议使用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');
    }
    

相关问题