The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
PERL::DBI , HTML::Template, !*! Azudim, 20-Фев-08, 00:17  [смотреть все]
Подскажите чайнику, как можно короче написать:

#!/usr/local/bin/perl
require 'sql.pl';
require 'html.pl';
use CGI qw/:standard/;
my $_IN = new CGI;
use HTML::Template::Pro;

sql_execute("SELECT User, Password, Uid FROM users");

my @users = (undef, undef, undef);
$sql_res->bind_columns( \$user, \$pass, \$uid);

my @loop_data = ();
while ($sql_res->fetchrow_arrayref) {
            my %row_data;
            $row_data{NAME} = $user;
            $row_data{PASS} = $pass;
            $row_data{UID} = $uid;
            push(@loop_data, \%row_data);
            }

$tmpl_users_table->param(THIS_LOOP => \@loop_data);
print $tmpl_users_table->output;            

  Задача - передать в THIS_LOOP ссылку на хэш, дабы в шаблоне заЛУУПить вывод массива данных из БД.

Шаблон:
<table width="200" border="1" cellspacing="0" cellpadding="0">
<tr><th scope="col">Users</th><th scope="col">Passwords</th><th scope="col">Uids</th></tr>
<TMPL_LOOP NAME="THIS_LOOP">
<tr><td><TMPL_VAR NAME="NAME"></td><td><TMPL_VAR NAME="PASS"></td><td><TMPL_VAR NAME="UID"></td></tr>
</TMPL_LOOP>
</table>

  • PERL::DBI , HTML::Template, !*! angra, 13:46 , 20-Фев-08 (1)
    Сократить перловый код почти всегда можно, вот только зачем? Чтобы он стал непонятным и его было трудно поддерживать? Хотя цикл конечно можно упростить, если посмотреть в сторону fetchrow_hashref. А может найдется метод в DBI, который вообще позволит от цикла избавиться, надо описание модуля читать, но ведь вы и сами можете это сделать, правда :)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру