Массив для данных выпадающего меню - PullRequest
1 голос
/ 01 октября 2011

Есть несколько идей для создания выпадающего меню из данных, заполненных из XML или JSON. Но как я могу сделать это чисто с php? Возможный метод - создать многоуровневый массив. Но как лучше всего создать его из данных mysql (с указанием родительского идентификатора для подменю) и как эффективно читать массив (через цикл foreach?)?

Ответы [ 2 ]

1 голос
/ 01 октября 2011

для php стороны, давайте предположим, что вы извлекаете с помощью этого запроса то, что находится в таблице в массиве формата:

$menu = array(
   'page/1' => 'about',
   'page/2' => 'photos',
   'menu-title' =>  array('page/4' => 'sub-menu-1','page/5' => 'sub-menu-2')
);

echo '<ul>';
foreach($menu as $key => $value){
  if(is_string($value)){
     echo '<li><a href="'.$key.'">'.$value.'</a></li>';
  }
  if(is_array($value)){
    echo '<ul>';
    echo '<li><a href="#">'.key($value).'</a></li>';
    foreach($value as $sub_key => $sub_value){
      echo '<li><a href="'.$sub_key .'">'.$sub_value.'</a></li>';
    }
    echo '</ul>';
  }
}
echo '</ul>';

для mysql базы данных,иметь столбец «parent_id», если он равен NULL, то это будет корневой уровень, кроме этого, это будет подпункт там, еще один столбец «path» и «title», вы также можете добавить столбец «weight»чтобы заказать их.

ПРИМЕЧАНИЕ: это непроверенный код

0 голосов
/ 01 октября 2011

Мне нравится циклически проходить по строкам, которые извлекаются из mysql, и создавать массив, где ключом является значение для ввода, а значением является текст. Итак, если вы хотите создать раскрывающийся список, например:

<input value="UT">Utah</input>
<input value="VT">Vermont</input>
<input value="NV">Nevada</input>
<input value="CA">California</input>

Я бы создал массив, который выглядел бы так:

array(

       "UT" => "Utah",
       "VT" => "Vermont",
       "NV" => "Nevada",
       "CA" => "California",
)

Очень просто перевести массив в HTML, используя foreach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...