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

#php #mysql #drupal #drupal-6

#php #mysql #drupal #drupal-6

Вопрос:

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

Ответ №1:

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

Ответ №2:

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

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

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

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

Ответ №3:

Вы можете использовать модуль Drupal webform.

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

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

Ответ №4:

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

Ответ №5:

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

cck

Число просмотров

Комментарии:

1. CCK ограничен содержимым (узлами). В Q не упоминается содержимое, только форма.

Ответ №6:

Хотя во многих ответах предлагается использовать модуль webform, кодирование собственных форм не является сложным и избавляет вас от установки mkodule, который вам не нужен. (Меньше кода и меньше таблиц в вашей базе данных — это хорошо.)

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

Предполагается, что mymodule это имя вашего модуля …

 // shows the form
mymodule_myform($form, amp;$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, amp;$form_state) {
}

// save the input to the database
mymodule_myform_submit($form, amp;$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');
}