Аргерих Л. О языке РНР. Часть 5. Страница 4


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 . "";