Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Формирование таблицы на php

10K
19 февраля 2007 года
m0zg
41 / / 11.10.2006
Есть функция для вывода картинок:

Код:
public function printCategories()
    {
        $categories = $this->getCategories();
       
        if($td == 0){
            print "<tr>";
            foreach ($categories as $index => $category)
            {
                $this->printRow($category);
                $td++;
            }
        }
       
        print $td; // это для проверки подсчёта кол-ва, выводит 6 штук, т.е. считает то всё правильно, но... :(
        if($td == 3){
            print "</tr>";
            $td = 0;
        }
    }


И есть printRow, которая вызывается в выше указанной. В ней реализаван вывод картинки и ссылки:

Код:
function printRow($category)
    {
        print "<td align='center' valign='top' style='padding-right: 15px;'>";
        print "<a href=\"?id=2&cat=".$category["id"]."\">";
        print "<img src=\"".CAT_THUMBS_PATH.($category["picture_file"] == null ? "null.gif" : $category["picture_file"])."\" class=\"".PRODUCTS_PICTURE_STYLE."\" alt=\"".$category["name"]."\" border=0>";
        print "</a>";
        print "<div style='margin-top:5px;margin-bottom:15px;'>";
        print "<a href=\"?id=2&cat=".$category["id"]."\" class='text'>";
        print $category["name"];
        print "</a>";
        print "</div>";
        print "</td>";
    }


Проблема в том, что у меня все картинки выводятся в одну строку (6 штук), а надо разбить по 3 в каждой. Что не так? Кто-нибудь подскажет?
244
19 февраля 2007 года
UAS
2.0K / / 19.07.2006
 
Код:
print $td; // это для проверки подсчёта кол-ва, выводит 6 штук, т.е. считает то всё правильно, но... :(
        if($td == 3){
            print "</tr>";
            $td = 0;
        }

Смотри! Здесь у тебя $td==6, оно таким и остается. А потом ты проверяешь его на равность 3! Естессно будет возвращаться false;

Может лучше так:
Код:
public function printCategories()
    {
        $categories = $this->getCategories();
        $td=1;

        foreach($categories as $index => $category)
            if($td===1)print "<tr>";
             $this->printRow($category);

             if($td == 3) { print "</tr>"; $td = 0; } else { $td++; }
        }
    }
92
19 февраля 2007 года
Тень Пса
2.2K / / 19.10.2006
и логичнее будет <tr></tr> включить в саму функцию printRow или назвать её printCell :)))

меньше заморочек в главном модуле, пусть все обрабатывают прикладные функции ) имхо так удачнее, да и код потом будет легче читать :)
10K
20 февраля 2007 года
m0zg
41 / / 11.10.2006
Спасибо за помощь :). Действительно, стормозил с проверкой $td.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог