2013-08-26 2 views
0

Пожалуйста, мне нужна помощь в этом. Я хочу создать многоуровневое меню, поэтому я хочу итерации через ассоциативный массив с циклом foreach внутри шаблона smarty. Во-первых, у меня есть выход MySQL: enter image description hereКак создать многоуровневое меню из ассоциативного массива.

Теперь я пытаюсь получить ассоциативный массив из него, поэтому я попытался fetchAll(PDO::FETCH_ASSOC), а потому, что имена столбцов совпадают, это дает мне значения в правой колонке:

Array ([0] => Array ([id] => 7 [name] => Beta 1-3 glucan) [1] => Array ([id] => 8 [name] => Okinawa Fucoidan) 

Пожалуйста, если у вас есть идеи, как обрабатывать эту таблицу, чтобы получить многомерное меню, дайте мне знать.

спасибо.

+0

Я предполагаю, что вы 'JOIN', а в обоих из них у вас есть' id' и 'name' (или вы присоединяетесь к той же таблице). Что вам нужно сделать, это использовать 'AS' в вашем запросе, например: вместо' SELECT * FROM table JOIN table ON ... 'write' SELECT t1.id AS level1_id, t1.name AS level1_name, t2. id AS level2_id, t2.name AS level2_name FROM table t1 JOIN table t2 ... '. Это решение даст вам 4 разных имени поля в каждой строке (level1_id, level1_name, level2_id, level2_name) –

ответ

1

Либо использовать FETCH_NUM, либо создавать псевдонимы в запросе.

0

Я предполагаю, что у вас есть JOIN столов, и в обоих из них у вас есть id и name (или вы присоединяйтесь к той же таблице). Что вам нужно сделать, это использовать AS в вашем запросе.

Например:

Вместо: SELECT * FROM table JOIN table ON [...]

Запись: SELECT t1.id AS level1_id, t1.name AS level1_name, t2.id AS level2_id, t2.name AS level2_name FROM table t1 JOIN table t2 ON [...].

Это решение даст вам 4 различных имена полей в каждой строке (level1_id, level1_name, level2_id, level2_name).

Смежные вопросы