Генерация таблици

Статус
В этой теме нельзя размещать новые ответы.

smertnik

Постоялец
Регистрация
5 Июн 2006
Сообщения
68
Реакции
30
Здравствуйте. Извиняюсь если не туда, но тема больше подходит для данного раздела:

Имеется БД в которой хранятся данные в виде: (Bitrix iblock)
Код:
Toplvl 
  podrazd1_1 
    podrazd1_2 
     element1 
    podrazd1_3 
     element2 
   podrazd2_1 
    podrazd2_2 
     element1
Их нужно вывести в таблицу вида, причем подразделы podrazd1_2 и.т.д могут добавляться:

Код:
[COLOR=#000000]----------------podrazd1_1--------------- 
---podrazd1_2---    -    ---podrazd1_3--- 
     element                   element 
     element                   element 
Может появиться podrazd1_4 
----------------podrazd1_1------------------------*--------- 
---podrazd1_2---    -    ---podrazd1_3---  -  ---podrazd1_4--- 
     element                   element            element 
     element                   element            element  [/COLOR]

В итоге у меня получилось сделать такой вывод но не без ошибок, и таблиц получилось многовато.
PHP:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?
if(CModule::IncludeModule("iblock"))
{
  $counter = 0;
  $countertop = 0;
  $colspan = 0;
  $arFilter = Array("IBLOCK_ID"=>"46", "GLOBAL_ACTIVE"=>"Y", "PROPERTY"=>Array("SPEC"=>"2"));
  $db_list = CIBlockSection::GetList(Array("left_margin"=>"ASC"), $arFilter, true);
  $db_list2 = CIBlockSection::GetList(Array("left_margin"=>"ASC"), $arFilter, true);
  while($ar_result2 = $db_list2->GetNext()) 
  { 
     if($ar_result2['IBLOCK_SECTION_ID']>"0")
       { 
         $colspan++;
       }
   }
   echo '<table width="100%" cellpadding="0" cellspacing="0" border="0">';
   while($ar_result = $db_list->GetNext())
   {
      if($ar_result['IBLOCK_SECTION_ID']<"0")
      {
         if($countertop == 1) { echo '</tr>'; $countertop = 0; }
         echo '<tr>
                 <td align="center" colspan="'.$colspan.'">'.$ar_result['NAME'].'</td>
               </tr>
               <tr>';
      } else {
         $counter = 1;
         echo '<td>
                 <table width="100%" border="0" cellpadding="0" cellspacing="0">
                   <tr>
                      <td>'.$ar_result['NAME'].'</td>
                   </tr>';
      }
      
      $items = GetIBlockElementList("46", $ar_result['ID'], Array("SORT"=>"ASC"), false, Array("PROPERTY_SPEC"=>"2"));
      while($arItem = $items->GetNext())
      {
        echo '<tr><td>'.$arItem["NAME"].'</td></tr>';
      }
      if($counter == 1)
      {
          echo '</table></td>';
          $counter = 0;
      }
      if($ar_result['IBLOCK_SECTION_ID']<"0") { $countertop = 1; }
   }
   echo '</tr></table>';

}

?>
Выглядит это так:
Код:
<table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr>
    <td align="center" colspan="4">Верхний Уровень</td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Подуровень</td>
        </tr>
        <tr>
          <td>Элемент</td>
        </tr>
        <tr>
          <td>Элемент</td>
        </tr>
      </table></td>
    <td><table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Подуровень</td>
        </tr>
        <tr>
          <td>Элемент</td>
        </tr>
      </table></td>
    <td><table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Подуровень</td>
        </tr>
        <tr>
          <td>Элемент</td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td align="center" colspan="4">Верхний Уровень</td>
  </tr>
  <tr>
    <td><table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Подуровень</td>
        </tr>
        <tr>
          <td>Элемент</td>
        </tr>
      </table></td>
  </tr>
</table>
Очень смущает колспан, может можно от него как то избавиться?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху