Все запросы из одной таблицы без иттераций

12
G
На сайте с 24.10.2009
Offline
51
870

Возник такой вопрос. Есть таблица в HTML. Скажем 3х3. В базе данных таблица с девятью записями. Каждая запись предназначена для помещения в определенную ячейку HTML-таблицы. Как это организовать?

[Удален]
#1

руками :)))

A
На сайте с 09.06.2009
Offline
33
#2

собственно вам чего надо то? код? на чем? на php или чемто другом?

Магазин аккаунтов с балансом Litres,DNS,Ozon,Rotapost и еще 50+ других сервисов тут - vk.cc/7QK0Sk
[Удален]
#3

можно на пхп.

G
На сайте с 24.10.2009
Offline
51
#4

Код на ПХП. Но мне не нужен код. Мне нужно объяснение. Как организовать. =) Коды я и сам умею писать. Это же не раздача кодов.

rtyug
На сайте с 13.05.2009
Offline
263
#5

если код не нужен, то можешь посмотреть пример на православном perl для HTML::Template

1) ну вот только оно будет все разбросано, не упорядоченно:

sub _boom {
my $self = shift;
my $c = shift;
my $aray = shift;
my $s = ceil(@{$aray} / $c);
my $b;
push @{$b->[$_ % $c]->{COLUMNS}}, {VALUE => $array[$_]} foreach (0 .. $#array);
return $b;
}

<table>
<TMPL_LOOP NAME="ROWS">
<tr>
<TMPL_LOOP NAME="COLUMNS">
<td><TMPL_VAR NAME="VALUE"/></td>
</TMPL_LOOP NAME>
</tr>
</TMPL_LOOP>
</table>

2) втрой вариант, то что надо, только возможно можно и попроще, просто под разные вещи он расчитан:


sub col_array {
my $self = shift;

my $loop_data = shift if @_;

$loop_data = $self->_array2table($loop_data, 4, order=>'rows', empty=>);

my $ll;

if ($loop_data) {
foreach $_ ( 0 .. scalar(@{$loop_data}) ) {

foreach my $ff ( @{$loop_data->[$_]} ) {

push @{$ll->[ $_ ]->{COLUMNS}}, $ff;
}

$loop_data->[$_] = undef;

}
}

return $ll if ($ll);

}

sub _array2table {

my $self = shift;

# Usage: $table = array2table($aref, $cols, [order=>'rows',empty=>'']);
# print "@$_\n" for @$table;
# $table - ссылка на двумерный прямоугольный массив (таблицу)
# $aref - ссылка на массив с данными
# $cols - кол-во колонок таблицы
# order=>'rows/cols/cols_fill' - порядок заполнения таблицы,
# 1 2 3 1 4 7 1 4 6
# 4 5 6 2 5 - 2 5 7
# 7 - - 3 6 - 3 - -
# empty=>'string' - строка для заполнения пустых ячеек

return undef if ref($_[0]) ne 'ARRAY';
my @a = @{(shift)};
my $cols = shift;
return undef if $cols !~ /^\d+$/;
my %par = (
order => 'rows', # or cols or cols_fill
empty => '',

);
return undef if $par{order} !~ /^rows|cols(?:_fill)?$/;

my @b;
my $rows = int(@a/$cols);
my $rest = ($cols-@a%$cols)%$cols;
$rows++ if $rest;
#print $#a+1, " $cols x $rows, $rest\n";
push @a, $par{empty} for 1..$rest;

if ($par{order} eq 'rows') {
for (my $i=0; $i<$rows; $i++) {
@{$b[$i]} = splice @a, 0, $cols;
}
}

if ($par{order} =~ /^cols/) {
if ($' eq '_fill') { # cols_fill
foreach (1 .. $rest) {
splice @a, $#a-$rows*($rest-$_), 0, $par{empty};
pop @a;
}
}
for (my $i=0; $i<@a; $i++) {
push @{$b[$i % $rows]}, $a[$i];
}
}
return \@b;
}


=head1 NAME

Model Class

=head1 SYNOPSIS

See L<MyApp>

=head1 DESCRIPTION

Model Class.

=head1 AUTHOR

Dmitriy

email: rtyug@ukr.net

=head1 LICENSE

This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;

вызываем col_array передаем туда массив-хэшей который сделать от DBI

    push @{$loop_data}, $_ while $_ = $sth->fetchrow_hashref();
$loop_data = col_array($loop_data);

на php я это тоже делал, только не могу зайти на сервер сейчас, если сильно надо могу потом показать если получиться...

как работает: http://ldap.x0.org.ua/photo_album/9/2

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
G
На сайте с 24.10.2009
Offline
51
#6

Вообще да, неплохо бы на ПХП. =) Я в перл - плохой. =)

Может сделать цикл в цикле? Это будет долго работать наверняка, если размеры HTML-таблицы будут значительно больше. Например не 3х3 а 30х30.

rtyug
На сайте с 13.05.2009
Offline
263
#7

для шаблонизатора smarty (или аналогичного) будет сложнова-то...

если в HTML через цикл, то можно как нибудь

[Удален]
#8
Gaaarfild:
Может сделать цикл в цикле?

Одного цикла за глаза достаточно.

Если $i счетчик в цикле, по условию

$k = $i%3;

if(!$k)echo "</tr><tr>";
будет таблица в 3 колонки и т.д.
G
На сайте с 24.10.2009
Offline
51
#9

А если таблица будет с большим числом колонок, то будут числа, делящиеся без остатка. Тут и не получится тогда.

[Удален]
#10
Gaaarfild:
А если таблица будет с большим числом колонок, то будут числа, делящиеся без остатка. Тут и не получится тогда.

Всё получится. Вы делайте главное. Как - Вам уже сказали.

Коды я и сам умею писать.

Уже слабо верится.

Делать тут вообще нечего. Выбираете всё из таблицы, гоните по циклу с $i от 0 до хз сколько, проверяете $i%3==0&&$i!=0 - закрыли </tr>, открыли новый. По ходу реализации понятно будет всё.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий