Мобильный сервиз Denis Mingulov Спецвыпуск: Хакер, номер #056, стр. 056-014-4 "track_u" character varying(120) - название песни, оптимизированное для поиска (как и выше, шаблон для LIKE). Шаблон для поиска может полностью совпадать с названием песни, а может включать в себя два специальных символа, с которыми можно сопоставлять различные символы в значении данных. Это символ подчеркивания '_' - просто любой символ (ровно один) - и знак процента '%', то есть любое число символов (от ноля). Например, результат сравнения 'Let It Be' LIKE 'Let%' будет равен 'истине'. Поиск (так должна выглядеть пустая форма WAP, которую будет выводить программа): <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="card1" title="Ringtone Search"> <do type="prev"><prev/></do> <do type="accept" label="Search"> <go method="get" href="srch.wml"> <postfield name="srch" value="$(srch)"/> </go> </do> <!-- а вот здесь нужно вставить результаты поиска или просто список файлов --> </card> </wml> На листинге ниже можно увидеть примерный текст скрипта на Perl (запрос уже сделан - реализуем полный поиск, заодно выводя результат под поисковой формой, рядом с комментарием). my $dbh = DBI->connect ("dbi:Pg:dbname=pgdb", "user", "", { RaiseError => 1, AutoCommit => 0 }); my $artist_filter = undef; my $srch = $Request->QueryString ("srch"); my $artist_filter = $Request->QueryString ("ar"); # если поиск if ($srch) { $sth = $dbh->prepare ("SELECT Artist, Track FROM RingtoneList WHERE Artist_U LIKE ? OR Track_U LIKE ? ORDER BY Artist, Track"); my $tmp = uc ("%" . $srch . "%"); $tmp =~ s/\s+/ /g; $sth->execute ($tmp, $tmp); } elsif (!$artist_filter) { $sth = $dbh->prepare ("SELECT Artist, Track FROM RingtoneList ORDER BY Artist, Track"); $sth->execute; } elsif ($artist_filter) { $sth = $dbh->prepare ("SELECT Artist, Track FROM RingtoneList WHERE Artist = ? ORDER BY Artist, Track"); $sth->execute ($artist_filter); } # И выводим результат с возможностью перехода на него - просто в виде ссылок Здесь мы соединяемся с базой данных, проверяем, был ли вызван скрипт для поиска информации (есть параметр 'srch') или же в результате перехода по имени певца (параметр 'ar'). Если просто поиск - ищем и в песнях, и в авторах. Иначе, если ищем по автору, то берем все его песни или просто выводим полный список. Разумеется, разделение на страницы лучше делать отдельным параметром запроса к скрипту. Также ты можешь сделать отдельную страницу для перехода на исполнителя по алфавиту. Коммерческий сервис Ты создал какой-нибудь сервис и хочешь зарабатывать на нем деньги? Если да, то самое время начать как-нибудь продавать доступ к своему сайту (навечно или на какое-нибудь время), сделать невозможным доступ для незарегистрированных пользователей или предоставить им возможность посмотреть демонстрационную версию. Если есть желание продавать доступ отдельно, например к каждой странице, создавай отдельную короткоживущую ссылку (хотя бы 12 часов - делаем скидку на возможную временную недоступность GPRS), по которой человек сможет скачать нужный ему файл. |