andrew
  • 0
Учитель

Категории как выбираемые ссылки в форме отправки

  • 0

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

Теперь есть ли способ использовать категории в виде ссылок (кнопок), чтобы, когда пользователь нажимал на одну из них, форма отправлялась, и он переходил к следующему шагу без необходимости нажимать фактическую кнопку отправки?

Вот так выглядит кнопка отправки:

<input type="submit" name="getcat" id="getcat" class="btn_catstep" value="<?php _e('Continue'); ?>" />

И вот как обрабатывается форма для каждой категории:

<?php
            $Category = get_term_by('id',$_POST['cat'],'p_cat');
            $_POST['catname'] = $Category->name;
        ?>

            <form name="mainform" id="mainform" class="form_step" action="" method="post" enctype="multipart/form-data">

                <ol>

                    <li>
                        <label><?php _e('Category');?>:</label>
                        <strong><?php echo $_POST['catname']; ?></strong>&nbsp;&nbsp;<small><a href=""><?php _e('(change)') ?></a></small>
                    </li>

                    <?php echo show_form($_POST['cat']); ?>

                    <p class="btn">
                        <input type="submit" name="step1" id="step1" class="btn_next" value="<?php _e('Continue'); ?>" />
                    </p>

                </ol>
                    <input type="hidden" id="cat" name="cat" value="<?php echo $_POST['cat']; ?>" />
                    <input type="hidden" id="catname" name="catname" value="<?php echo $_POST['catname']; ?>" />
                    <input type="hidden" id="fid" name="fid" value="<?php if(isset($_POST['fid'])) echo $_POST['fid']; ?>" />
                    <input type="hidden" id="oid" name="oid" value="<?php echo $order_id; ?>" />
            </form>

В настоящее время у меня есть категории в базовом раскрывающемся списке с кнопкой отправки под ним. Если мне придется жестко кодировать ссылки одну за другой, нет проблем, просто я не знаю, как это сделать.

Share
  1. Как только вы получили свои категории, скажем, в $categories, вы можете сделать что-то вроде этого:

    <?php
    foreach ($categories as $catgory) {
        ?>
        <form id="cat-button-form-<?php echo $category->ID; ?>" action="<?php echo $url_to_step_2; ?>" method="POST">
            <input type="hidden" name="mycat" value="<?php echo $category->ID; ?>" />
            <input type="submit" name="getcat" id="getcat_<?php echo $category->ID; ?>" class="btn_catstep" value="<?php printf(__('Select %s &amp; Continue'), $category->name); ?>" />
        </form>
        <?php
    }
    ?>
    

    На шаге 2 вы затем читаете $_POST['mycat'] и идете оттуда.

    • 0
    • Отлично! Спасибо большое. Одна вещь, хотя: как я мог жестко закодировать это? Если у меня есть разные кнопки для каждой категории, и мне нужно их стилизовать по-разному. Я не слишком глубоко разбираюсь в этих динамических функциях.

      • 0
    • См. это в приведенном выше коде: id="getcat_<?php echo $category->ID; ?>" … я также добавил id="cat-button-form-<?php echo $category->ID; ?>" в тег формы. Таким образом, теперь вы можете использовать CSS для стилизации каждого из них по своему усмотрению. Если вы действительно хотите жестко запрограммировать его, вы просто скопируете весь <form></form> раздел для каждой кнопки и замените $category->ID эхо на фактический идентификатор категории в каждой. Тем не менее, я бы рекомендовал придерживаться динамического пути и привыкнуть к нему. 😉

      • 0
    • Дох! Вы с самого начала все прикрыли. Еще раз, спасибо. С этого момента я буду использовать динамический подход. Ты звезда!

      • 0
    • Последнее, что я обещаю 🙂 Я хотел сделать отправку немного более простой и иметь выбор категории и форму отправки на основе категории на одной странице, чтобы я мог сделать один шаг в сторону от процесса. Я добавляю <?php if(!isset($_POST['cat'])) { ?> страницу, поэтому сначала у меня будет выбор категории, а <?php } else { $Category = get_term_by('id',$_POST['cat'],'p_cat'); $_POST['catname'] = $Category->name; ?> затем процесс выбора формы. Но когда я нажимаю кнопку категории (отправить), она снова загружает страницу, а не правильную форму. Что дает?

      • 0
    • Вам нужно проверить $_POST['mycat'], а не «кошку». Я назвал параметр «mycat», потому что это предотвращает его интерпретацию как параметр запроса для ограничения сообщений по категориям.

      • 0

Оставить ответ

You must login to add an answer.