Drupal - Создать форму - PullRequest
       5

Drupal - Создать форму

1 голос
/ 14 апреля 2011

Как мне создать форму в drupal с примерно 5 текстовыми полями, позволяя пользователю вводить данные, затем нажимать кнопку отправки и получать ее, чтобы сохранить все данные в таблице базы данных mysql?

Ответы [ 6 ]

5 голосов
/ 14 апреля 2011

Я настоятельно рекомендую вам прочитать эту страницу об API форм , который является мощным инструментом Drupal для управления формами.

3 голосов
/ 14 апреля 2011

Ну, как вы можете видеть из других ответов на этот вопрос, есть много разных способов сделать это.Возникает вопрос: что вы хотите сделать с данными, как только они появятся в mysql.

1) Если вы хотите, чтобы данные каким-то образом хранились в mysql, и данные будут проверяться кем-то, но неНе нужно показывать пользователям в целом, тогда, вероятно, лучше всего использовать webform.Это позволяет вам легко создать форму, в которую люди могут вводить данные, и которую привилегированный пользователь может затем просмотреть результаты либо онлайн, либо загрузив ответы в файл.Webform особенно хороша для настройки опросов и других форм, где вы хотите, чтобы каждый пользователь заполнил его только один раз.

2) Если вы хотите, чтобы люди отвечали на вопросы в форме, а затем отображали результаты в виде данныхна вашем веб-сайте, особенно если вы хотите отобразить результаты в представлениях, затем создать тип узла с помощью cck и позволить людям создавать узлы с их ответами.Немного сложнее убедиться, что каждый пользователь создает узел один раз, но как только они созданы, они могут отображаться различными способами с помощью существующих инструментов.

3) Если вам нужен вывод формы для перехода вопределенную таблицу, которую вы создали или которая была вам предоставлена, тогда, вероятно, лучше всего разобраться и изучить Form API и создать код самостоятельно.Webform и CCK создают таблицы для собственного использования, которые не работают, если вы используете существующую систему.

2 голосов
/ 08 октября 2012

Вы можете использовать модуль веб-формы Drupal.

Если вы хотите создать пользовательскую форму, вы можете создать свой собственный модуль.Эта ссылка поможет вам.

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

1 голос
/ 14 апреля 2011

Если вам просто нужно несколько полей, вы можете использовать модуль cck и создавать контент, который имеет эти поля, установите разрешения для всех пользователей, создающих контент.С помощью модуля Views можно создать список всех созданий.

cck

Views

1 голос
/ 14 апреля 2011

Вы также можете попробовать модуль webform . Это в значительной степени служит вашим потребностям

0 голосов
/ 09 марта 2014

Несмотря на то, что многие ответы предлагают использовать модуль веб-формы, кодирование ваших собственных форм не является сложным и избавляет вас от установки 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');
}
...