1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем smertnik, 28 янв 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. smertnik

    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>
    
    Очень смущает колспан, может можно от него как то избавиться?
     
Статус темы:
Закрыта.