*

Spido

  • *
  • 1602

Как создать раздвигающееся вниз меню выбора

Перевод:

Цитировать
Люди часто спрашивают, как создать раздвигающееся вниз меню выбора, они часто, кажется, борются, придумывая фантастическое кодирование или попытку сделать меню на чистом html.osC включает функцию tep_draw_pull_down_menu, которую будем использовать, это исключает большую часть кодирования, но требует правильно отформатированный массив, это - ахиллесова пята для многих, которая останавливает использование этой функции.

Параметры для tep_draw_pull_down_menu are ($name, $values, $default = '', $parameters = '', $required = false)   


$name is the id for the field
$values is the array containing the selection data $default is the default value selected
$parameters optional styling params
$required adds the defined TEXT_FIELD_REQUIRED text if true

Для этого примера используется код, который был написан для опускающегося меню категорий ссылок, для взаимных ссылок (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)


Шаг 1: создайте массив и поместите значения значения по умолчани
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
//category drop-down  $category_array = array();  $category_array[0] = array('id' => '0', 'text' => 'Please Select');

Шаг 2: читайте данные от dBASE для использования в массив
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
$category_query = tep_db_query("select category_id, category_name from links_categories where status = 1 order by sort_order, category_name");

Шаг 3: Цикл по данным, положив его в выборе массива ($ category_array)
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
while ($category_values = tep_db_fetch_array($category_query)) {       
$category_array[] = array('id' => $category_values['category_id'], 'text' => $category_values['category_name']);           
}


Отметьте использование 'id', и 'text', 'id' содержит значения, возвращенные на выборе, 'text' - то, что отображено снижением вниз (они могут быть тем же самым).
Помните, что у этого массива есть его собственный индекс, он не индексирован 'id'.

Шаг 4: Выведите снижение вниз
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
<td align="right" width="100%"><?php echo tep_draw_form('category'tep_href_link('links.php''action=catsel'), 'get').'Links Category: ' .
tep_draw_pull_down_menu('select_category'$category_array$selected_cat'onchange="this.form.submit();" rel="nofollow"'); ?>

<noscript><input title="View" name="" type="submit" value="Go" /></noscript></form></td>


В этом случае выпадающие в пределах своей форме (drop_downs всегда должна быть частью формы), если вы используете это как часть более крупной формы вы можете удалить элементы формы.
Обратите внимание на использование tep_href_link в виде действий, это является критическим.

Links Category: is the displayed text adjacent the drop.
'select_category' is the field id. $category_array we created above.
$selected_cat has the currently selected category (so that shows pre-selected in the drop (the default))
'onchange="this.form.submit();"' a parameter, in this case a bit of Javascript to accept input as soon as change made (just an option).
rel="nofollow" often useful to prevent issues with google (duplicate content) this will prevent validation though, use a canonical tag if that's an  issue (just an option).
<noscript><input title="View" name="" type="submit" value="Go" /></noscript> provide a submit button if scripts are off (just an option) 

Наконец Вы должны обработать данные в странице получения, то есть
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
$selected_cat = ($_GET['select_category'] > 0 ? $_GET['select_category'] : false);

это может быть той же самой страницей, если это - то, на что Ваше действие формы указывает.

Advanced Options 
Вы можете получить доступ к данным в выборе массива отдельно, то это будет вопрос, как массив имеет свой собственный индекс, так что размещение в тех же данных в секунду массив в то же время вы создаете отбор массив ответов, т.е. в то время как добавить:
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
$categories[$category_values['category_id']] = $category_values['category_name'];

Вы можете теперь получить любую категорию с id.
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
echo $categories[$id];

« Последнее редактирование: 02 Нояб. 2009 21:22:13 pm от Spido »