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