Формирование таблицы на php
Код:
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;
}
}
{
$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>";
}
{
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 в каждой. Что не так? Кто-нибудь подскажет?
Код:
print $td; // это для проверки подсчёта кол-ва, выводит 6 штук, т.е. считает то всё правильно, но... :(
if($td == 3){
print "</tr>";
$td = 0;
}
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++; }
}
}
{
$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++; }
}
}
меньше заморочек в главном модуле, пусть все обрабатывают прикладные функции ) имхо так удачнее, да и код потом будет легче читать :)
Спасибо за помощь :). Действительно, стормозил с проверкой $td.