Сортировка материалов различного уровня вложен.

Олег15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
05.09.2011

На сайте на главной странице организована сортировка материалов по производителям. Так вот для сортировки выбираются материалы только до второго уровня вложенности, дальше 3-ий, 4-ый и т.д. не учитывает. Необходимо решить эту проблему.

Вот код который я так понимаю отвечает за выборку:

//по производителям

if(isset($_GET['catalog'])){

$sql = "SELECT * FROM producer";

$result = mysql_query($sql);

while($e = mysql_fetch_assoc($result)){

//print_r($e);

$sql = "SELECT * FROM catalog WHERE parent_id = '".$_GET['catalog']."' AND isactive=1 ORDER BY outorder ASC";

$result_1 = mysql_query($sql);

$items = '';

while($c = mysql_fetch_assoc($result_1)){

$sql = "SELECT * FROM catalog WHERE parent_id = '".$c['id']."' AND isactive=1 AND producer='".$e['id']."' ORDER BY outorder ASC";

$result_2 = mysql_query($sql);

if(mysql_num_rows($result_2) > 0){

$item = '

  • '.$c['caption'].'';
  • $r = mysql_query("SELECT * FROM catalog WHERE parent_id = ".$c['id']." AND isactive=1");

    $items .= $item;

    }

    }

    if($items != ''){

    echo '

    '.$e['caption'].'';

    echo (mysql_num_rows($result_1) > 0) ? '

      ' : '';

      echo $items;

      echo (mysql_num_rows($result_1) > 0) ? '

    ' : '';

    echo '';

    echo '

    ';

    }

    }

    }

    else{

    $sql = "SELECT * FROM catalog WHERE parent_id = 0 AND isactive=1 ORDER BY outorder ASC";

    $result = mysql_query($sql);

    while($e = mysql_fetch_assoc($result)){

    //print_r($e);

    echo '

    '.$e['caption'].'

    ';

    $res = mysql_query("SELECT * FROM catalog WHERE parent_id = ".$e['id']." AND isactive=1 ORDER BY outorder ASC");

    echo (mysql_num_rows($res) > 0) ? '

      ' : '';

      while($c = mysql_fetch_assoc($res)){

      echo '

    • '.$c['caption'].'';
    • $r = mysql_query("SELECT * FROM catalog WHERE parent_id = ".$c['id']." AND isactive=1");

      }

      echo (mysql_num_rows($res) > 0) ? '

    • По производителям
    ' : '';

    echo '';

    echo '

    ';

    }

    }

    ?>