The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"fetchrow_array и загаловки полей"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"fetchrow_array и загаловки полей"  
Сообщение от Arpo email(ok) on 24-Сен-08, 13:30 
Народ вот кусок кода
_______________________________________________________________

while (@row = $sth->fetchrow_array){
        $c=$#row;
        print "<tr>";
        for ($i=0;$i<=$c;$i++) {
                                if ($row[$i]) {
                                print "<td>$row[$i]</td>";
                                }
                                else {
                                print "<td>-</td>";
                                }
        }
        print "</tr>";
}
$rc = $sth->finish;
$rc = $dbh->disconnect;
_________________________________________________________________________

Код выводит таблицу. Как добиться того чтоб с таблицей выводились и заголовки полей?
Да и еще буду рад если кто нить посоветует как этот кусок можно переписать по короче, а то что то тут не так, но не пойму что.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "fetchrow_array и загаловки полей"  
Сообщение от angra (ok) on 24-Сен-08, 20:28 
>Код выводит таблицу. Как добиться того чтоб с таблицей выводились и заголовки
>полей?

Вообще говоря это делается отдельно на основе запроса, но если у вас есть только $sth после выполненного execute и больше никакой информации о запросе, то воспользуйтесь fetchrow_hashref
>Да и еще буду рад если кто нить посоветует как этот кусок
>можно переписать по короче, а то что то тут не так,
>но не пойму что.

while (@row = $sth->fetchrow_array){
map {$_=$_ || "-";$_="<td>$_</td>"} @row;
print "<tr>@row</tr>"
}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "fetchrow_array и загаловки полей"  
Сообщение от Arpo email(ok) on 25-Сен-08, 08:11 
>[оверквотинг удален]
>есть только $sth после выполненного execute и больше никакой информации о
>запросе, то воспользуйтесь fetchrow_hashref
>>Да и еще буду рад если кто нить посоветует как этот кусок
>>можно переписать по короче, а то что то тут не так,
>>но не пойму что.
>
>while (@row = $sth->fetchrow_array){
> map {$_=$_ || "-";$_="<td>$_</td>"} @row;
> print "<tr>@row</tr>"
>}

Дорогой angra, спасибо за ответ, Я знал что если он и будет, то именно от вас.

Не могли бы вы привести работающий пример с использованием fetchrow_hashref. Я буду очень признателен.

За ТЮНИНГ кода отдельное Спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "fetchrow_array и загаловки полей"  
Сообщение от angra (ok) on 25-Сен-08, 09:29 
>Дорогой angra, спасибо за ответ, Я знал что если он и будет, то именно от вас.

Зря вы так, на форуме достаточно людей знающих перл.

>Не могли бы вы привести работающий пример с использованием fetchrow_hashref. Я буду
>очень признателен.

Вариантов решения очень много и выбор зависит от условий. Но если предположить что данных сравнительно мало, то можем не экономить память и сделать примерно так:

use Data::Dumper #в рабочем варианте не нужно, это для отладки/визуализации
my $data=$sth->fetchall_arrayref({});
if (@$data) { #вообще говоря нужна более тщательная обработка ошибок, но это уже зависит от остального кода
  print Dumper($data); #это чтобы вы могли увидеть как выглядит возвращаемая структура, без этого будет тяжело понять как работает остальной код
  my @headers=keys($data->[0]); #получаем имена колонок
  print "<tr>";
  print "<th>$_</th> foreach @headers;

  foreach my $row (@$data) {
    print Dumper($row); #опять таки для понимания того что происходит
    print "<tr>";
    print "<th>$row{$_}</th> foreach @headers; #используем @headers дабы получать колонки в правильном порядке. Это важный момент,
    print "</tr>";
  }
}


>За ТЮНИНГ кода отдельное Спасибо!

Пожалуйста, только не забудьте почитать описание функций map и grep и потренироваться с ними. Обратите внимание, что в коде выше я намерено показал для иллюстрации вариант с foreach вместо map, попробуйте в качестве упражнения сами переделать под map.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "fetchrow_array и загаловки полей"  
Сообщение от Arpo email(ok) on 25-Сен-08, 09:45 
>[оверквотинг удален]
>  }
>}
>
>
>>За ТЮНИНГ кода отдельное Спасибо!
>
>Пожалуйста, только не забудьте почитать описание функций map и grep и потренироваться
>с ними. Обратите внимание, что в коде выше я намерено показал
>для иллюстрации вариант с foreach вместо map, попробуйте в качестве упражнения
>сами переделать под map.

Велликолепно!!! пошел пробовать. Спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "fetchrow_array и загаловки полей"  
Сообщение от Arpo email(ok) on 25-Сен-08, 15:17 
Многоуважаемый angra и все остальные, Я позволил себе чуток подредактировать код. Вот что получилось:

$data=$sth->fetchall_arrayref({});
if (@$data) {
    @headers=keys %{$data};
    print "<tr>";
    print "<td>$_</td> " foreach @headers;
        foreach $row (@$data) {
        print "<tr>";

        foreach $a (@headers) {
            if (@$row{$a}) {
                print "<td>@$row{$a}</td>";
            }
            else {
                print "<td>-</td>";
            }
        }
        print "</tr>";    
    }

}


Все работает на Ура, вот только порядок столбцов перемешался.
Раньше все выводилось, так:
|ID|Date|name|content|

и Это было правильно

Теперь же вывод совершенно иной. Столбцы поменялись местами и я даже не могу понять по какому принципу, Это точно не алфавитная сортировка.

Как посоветуете  поступить.???

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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