Pergunta

Isso deve (espero) ser uma pergunta muito fácil para alguns de vocês para resposta.

Eu tenho um menu recursiva trabalhar a partir de um banco de dados mySQL, agora meu principal problema é:

O que é a melhor maneira de criar a URL? Eu preferiria para trazer o título de cada linha como / ovos / leite / bacon /. Ovos estar nível 0 como: ovos-0, leite-1, bacon-2. Todas as ideias sobre como dynamicly saída isso?

Eu estou praticamente indo para o "cletus", disse alguns comentários para baixo sobre esta questão: PHP / MySQL - a construção de um menu nav hierarquia

Mas eu preciso de um pouco mais explicação sobre como fazê-lo.

Foi útil?

Solução

Se você não pretende modificar a sua árvore de menu, muitas vezes, pré-armazenar o URL hierárquico necessário para cada item do menu é provavelmente o mais fácil (para o tempo de execução resolução que é).

Se você espera que a árvore a ser modificado muitas vezes, vamos dizer - através de uma interface web, então seria mais fácil para gerar os caminhos cada vez que você ler o menu, algo como isto:

 id | name   | parent
----+--------+-------
 0  | eggs   | NULL
 1  | milk   | 0
 2  | bacon  | 1
 3  | tomato | 0
 4  | lettuce| 1

foreach (query("SELECT * FROM menu ORDER BY parent ASC") as $row) {
  $menuitem = array_merge(array(), $row);
  $menuLookup[$menuitem['id']] &= $menuitem;
  if ($menuitem['parent'] == null) {
    $menuitem['path'] = "/" . $menuitem['name'];
    $menu[] &= $menuitem[];
  } else {
    $parent &= $menuLookup[$menuitem['parent']];
    $menuitem['path'] = $parent['path'] . "/" . $menuitem['name'];
    $parent['menu'][] &= $menuitem;
  }
}

Eu não tenho depurado esse código, só foi testada-lo para correção; -)

Outras dicas

Bem, se você quiser uma hierarquia, ser o melhor método que conheço é chamado de "Modificado Preorder Árvore Traversal" que é descrito em grande detalhe neste artigo Sitepoint , começa a cerca de metade para baixo.

A principal diferença do que Guss sugerida é que é um pouco mais alto desempenho e muito mais fácil apenas para buscar a parte da árvore que você está procurando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top