|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Serge Chervjakov 2:5020/400 17 Aug 2004 19:41:35 To : Melekhov Alexandre A. Subject : Динамическое построение таблиц -------------------------------------------------------------------------------- Tue Aug 17 2004 18:33, Melekhov Alexandre A. wrote to All: MAA> Есть MySQL БД, в ней несколько полей. Скриптом из этой базы делается MAA> выборка SELCT *, дабы не указывать какие именно поля мне нужны. Теперь MAA> ситуация немного меняется - нужно на веб выводить не все поля, а только MAA> отмеченные в (какой-нибудь) форме, например при помощи check_box'ов. Hу так и выводи. В чем проблема? База тебе хеш возращает, что надо из хеша, то и бери... вообще не понимаю в чем проблема... В общем проблема в проектировании, вот в чем проблема.. MAA> А теперь вопрос, как это сделать, если формирование заголовка таблицы MAA> делается всегда статично, типа: MAA> print $q->Tr( { -bgcolor => "#ffffcc" }, [ MAA> $q->th( MAA> ["ID","Фамилия Имя Отчество","Домашний телефон","Рабочий MAA> телефон","Сотовый телефон"]), MAA> ] ); Плохо. Hе знаю как все, но я предпочитаю использовать шаблон и в скрипте текста не держать. Ибо шаблоны мои правят регулярно, а кто ж мои скрипты править будет? Это не удобно. А что формирование заголовков таблицы статично.. дык елки - сделай не статично:)). В чем проблема-то???? MAA> а не всегда нужно знать сразу все. И если просто выводить отмеченные MAA> поля БД, то таблица "съедет", что, согласитесь, не красиво. MAA> И как динамически строить хидер таблицы - не понимаю. MAA> Конечно, можно дампить базу, поднимать MySQL под Win, конвертировать для MAA> Access и уже в нем делать такие выборки. Hо это же целый процесс... Погоди ка.. а ты вообще что хочешь-то?:) Выдать всю базу что ли?:) В общем смотри как этот процесс должен проходить (учитываю, что генерация выхода идет в скрипте, без использования шаблонов): Получил запрос, узнал какие поля были "чекнуты". Как это сделать... по разному. В общем мне лень копаться по perldoc cgi, что б узнать как это нормально делается, но я бы сделал так: сделал бы чек-боксы, с именами - полями в базе (хотя конечно именно так бы не делал - безопасность, ну не суть:) ). Дальше идет запрос к базе данных show fields from table. Потом в массив пихаем все имена полей, что были чекнуты (show fields возращает список полей). Думаю сам догадаешься, как проверить - чекнуто это поле или нет (напоминаю - в html'ке имена чекбоксов совпадают с именем в базе, 1 или какое другое значение приходит если было чекнуто, 0 или совсем ничего - если нет). Все - в массиве теперь лежит список полей. Делаем my $fields=join(",",@fields), проверяем что он не пустой и делаем запрос к базе (select $fields) и дальше уже генерируешь выход. Думаю до этого тоже догадаешься. Если нет, то не судьба. Можно еще не извращаться с show fields, а сделать просто select * и посмотреть, какие ключи в возращаемых хешах. Чесно говоря, это должно быть очевидно, если нет, то плохо... --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/166795ea0029c.html, оценка из 5, голосов 10
|