php рекурсивная крошка из MySQL с именами категорий - PullRequest
1 голос
/ 25 августа 2011

Вот мой код:

function printBreadCrumb($id,$level=0) {

    $levelNames=array('Year','Model','Serie','Maker');
    $query = "SELECT * FROM category  WHERE del=0 AND id=".$id." LIMIT 0,1";
    $res = mysql_query($query) or die($query);
    while ($row = mysql_fetch_array($res)) {

      $link = "<a href=\"index.php?parent_id=".$row['parent_id'].
              "\">".$levelNames[$level].":".$row['name']."</a>";

      $bc .= $level==0 ? $link : $link . ' > '  ;
      $parent_id = $row['parent_id'];

      printBreadCrumb($parent_id,$level+1);
    }
    echo $bc."";   
  }

Функция работает нормально, и я вижу правильные названия категорий.
Что я хочу: показать, к какому уровню levelName принадлежит элемент.

Например: Производитель: BMW> Серия: 3> Модель: 320> Год выпуска: 2009

Теперь мой код работает только в самой глубокой категории [Год]. Если я поднимусь на один уровень выше, я получу это:

Серия: BMW> Модель: 3> Год выпуска: 320

1 Ответ

1 голос
/ 25 августа 2011

Я думаю, что проблема в параметре вашего уровня, который вы передаете в функцию в первый раз, потому что код в порядке.Вы должны проверить свою функцию вызова.Возможно, вы всегда звоните с $ level = 0.

Также вы должны удалить while, потому что вы всегда получаете только одну запись.Вместо того, чтобы в то время как вы должны использовать простой $ row = mysql_fetch_array ($ res);

...