У статті Database API Drupal 7, вибірка даних і їх видалення. db_select, db_query і db_delete. Частина 3 ми повністю написали сторінку з таблицею, де виводяться дані з нашої таблички і ще зробили функціонал видалення запису з таблиці.
Тут ми напишемо форму для поновлення запису використовуючи db_update.
написання форми
Звичайно ж нам потрібно написати окрему форму яка буде призначена для відновлення наших даних. Але для того що б створити форму, нам необхідно оголосити нову сторінку в hook_menu. Код сторінки буде наступний:
$ Items [ 'my_database /% / update'] = array (
'Title callback' => 'my_database_update_page_title'.
'Title arguments' => array (1).
'Page callback' => 'drupal_get_form'.
'Page arguments' => array ( 'my_database_update_form'. 1).
'Access arguments' => array ( 'administer site configuration').
По суті тут немає нічого складного. Якщо ви не знаєте що означає кожний пункт, тоді обов'язково почитайте про це в попередній статті, про яку ми вже згадували вище.
Наведемо функцію яка вказана в title callback. тому що користувач, який буде користуватися нашим функціоналом повинен розуміти що він редагує, а заголовок якраз дасть відмінну підказку.
Функція 'my_database_update_page_title' матиме такий вигляд:
function my_database_update_page_title ($ id)
$ Placeholders = array ( ': id' => $ id);
$ Number = db_query ( "SELECT` number` FROM WHERE `id` =: id". $ Placeholders) -> fetchField ();
return t ( 'Edit item with number "@num"'. array ( '@num' => $ number));
$ Form [ '#validate'] [] = 'my_database_insert_form_validate';
оновлення даних
За поновлення даних звичайно ж буде відповідати функція по відправці форми, вид її буде наступний:
function my_database_update_form_submit ($ form. $ Form_state)
$ Id = $ form_state [ 'build_info'] [ 'args'] [0];
$ Values = $ form_state [ 'values'];
$ Form_state [ 'redirect'] = 'my_database';
З коду все повинно бути зрозуміло. Ось наприклад в рядках 5-12 відбувається оновлення даних. Ми вказуємо яку таблицю будемо оновлювати, даємо дані в метод fields. обов'язково вказуємо умова (condition) яка саме запис повинна бути оновлена і в кінці виконуємо запит.
Далі відбувається перевірка. Якщо результат поновлення повертає нам значення 1, тоді це означає що запис оновлена і ми виводимо відповідне повідомлення. Якщо виводити 0, тоді це означає що запис була оновлена або в ній не було що оновлювати. Ну і в кінці написаний перехід на сторінку з таблицею.
фінальний штрих
У нашій таблиці залишилося тільки додати посилання на сторінку редагування записи. Рядок буде така:
Упевнений що ви зможете знайти куди і як її вставити, що б вона була в колонці 'Actions'.
Звичайно ж, вихідний код модуля ви можете скачати в кінці статті.
Ось і все, ми закінчили написання модуля, який створює свою таблицю в БД Друпал-а, створили сторінку для вставки даних, виведення їх в таблиці, оновлення та видалення. Ще, ми досить добре познайомилися з hook_menu, можливостями Form API, Database API в Друпал 7.
Дякую всім за увагу і спасибі за те, що користуєтеся сайтом DrupalGuide.ru.