1, 2);
$widgets['search1]['table']->attach( $widgets[' search' ] [' search_by' ],
1, 2,
2, 3);
$widgets["search' ]['table']->attach(
$widgets[' search' ] [' search_btn * ],
0, 2,
3, 4);
$widgets['search"]['table']->attach( $widgets['search']['result_list'],
0, 2,
4, 5);
Наконец, поместим таблицу в окно и вызовем метод show_a'll(), чтобы показать ее:
$windows['search']->add($widgets['sea rch']['table']); $windows['search' ]->show_all();
}
Как и в других функциях, объявляем $windows и $widgets глобальными, чтобы иметь возможность доступа к окнам и графическим элементам, ранее созданным в этой функции:
function performSearch() {
GLOBAL $windows; GLOBAL $widgets;
Мы должны получить информацию из формы, которую заполнил пользователь. Сначала получаем текст, который пользователь ввел в окно поиска, вызывая метод get_text() экземпляра GtkEntry. Нам также необходимо узнать, что пользователь выбрал в двух созданных нами выпадающих списках. Такую возможность дает свойство entry объекта GtkCombo. Присваиваем его временной переменной, к которой потом также применяем метод чтобы получить выбранный текст:
$search_txt = $widgets['search']['search_txt']->get_text(); $series_entry = Swidgetsfsearch']['search_series']->entry; $search_series = $series_entry->get_text(); $by_entry = $widgets['search']['search_by']->entry; $search_by = $by_entry->get_text();
Последние 7 строк создают запрос SQL. Сначала присваиваем переменной $search_by ту часть SQL, которая образует предложение WHERE. Затем создаем оставшуюся часть запроса SQL с применением ряда конструкций LEFT JOIN, чтобы выбрать необходимые данные:
switch ($search_by) { case "ISBN":
$search_field = 'title.ISBN= "' . $search_txt . "";
break;
case "Author Name":
$search_field - 'Author.auth_name LIKE "%' . $search_txt . '%"';
break;
case "Title": default:
Ssearch field - "title.book_title LIKE "'%' . $search_txt . '%'";
}
$sql - 'SELECT title.book_title, details.ISBN, price, num_of_books, ' . 'book_series, Author.auth_name FROM details LEFT JOIN title 1 . 'ON title.ISBN = details.ISBlClEFT JOIN series ON ' . "details.series_ID = series.series_ID LEFT JOIN AuthorTitle ' . 'ONtitle,ISBN = AuthorTitle.ISBN LEFT JOIN Author ON " . 'AuthorTitle.auth_ID= Author.auth_ID WHERE ' . $search_field . 1 AND series. book_series LIKE'" . $search_series . "";