*

Spido

  • *
  • 1612

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

Перевод:

Цитировать
Люди часто спрашивают, как создать раздвигающееся вниз меню выбора, они часто, кажется, борются, придумывая фантастическое кодирование или попытку сделать меню на чистом 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

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

Шаг 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 »