#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.
Если вы хотите создать пользовательскую форму, вы можете создать свой собственный модуль. Эта ссылка поможет вам.
Ответ №4:
Вы также можете попробовать использовать модуль webform. Это в значительной степени удовлетворяет вашим потребностям
Ответ №5:
если вам нужно всего несколько полей, вы можете использовать модуль cck и создать контент, содержащий эти поля, установив разрешения для всех пользователей, создающих контент. С помощью модуля views можно создать список всех созданных.
Комментарии:
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');
}