@NastyaG

Как правильно отправить данные через форму на php?

Здравствуйте!
В php пока новичок, есть такой вопрос)

У меня есть таблица с данными и я делаю ее фильтрацию.
Вывожу форму с полями для фильтрации и вариантами сортировки:

<form action="allEmployees.php">

                <label for="pos">Position:</label>
            <select class="form-control" name="pos">
                <?php
                for($i=0;$i<count($pos);$i++){
                    echo "<option name='$id'>".$pos[$i]['title_pos']."</option>";
                }
                ?>
            </select>
            <label for="type">Payment type:</label>
            <select class="form-control" name="type">
                <?php
                for($i=0;$i<count($types);$i++){
                    echo "<option name='$id'>".$types[$i]['title_type']."</option>";
                }
                ?>
            </select>


            <p>Sorted data:</p>
            <input type="radio" name="sorted" value="salary asc"> salary asc<Br>
            <input type="radio" name="sorted" value="salary desc"> salary desc<Br>
            <input type="radio" name="sorted" value="birthday asc"> birthday asc<Br>
            <input type="radio" name="sorted" value="birthday desc"> birthday desc<Br>

            <br/><button type="submit" class="btn btn-primary">Filter data</button>
        </form>


Проблема вот в чем: если я хочу только отсортировать данные и не трогать фильтры Payment type, Position у меня так не получается.
В любом случае в запрос передаются данные об этих значениях в виде ?pos=junior&type=rate

Как сделать так, чтобы эти фильтры передавались только в случае если я их выбираю, а не по умолчанию?
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
anton_lazarev
@anton_lazarev
Надо добавить пустые option c параметром selected, тогда они по умолчанию будут выбраны:
<select class="form-control" name="pos">
<option value="Choose one" selected>
                <?php
                for($i=0;$i<count($pos);$i++){
                    echo "<option name='$id'>".$pos[$i]['title_pos']."</option>";
                }
                ?>
            </select>
            <label for="type">Payment type:</label>
            <select class="form-control" name="type">
           <option value="Choose one" selected>
                <?php
                for($i=0;$i<count($types);$i++){
                    echo "<option name='$id'>".$types[$i]['title_type']."</option>";
                }
                ?>
            </select>


Плюс еще я заметил ошибку в циклах: вы используете некую переменную $id и присваиваете его параметру name, но по логике это должно быть .$pos[$i]['id'] и $types[$i]['id'] с присвоением параметру value. Плюс можно открыть для себя цикл foreach:
<select class="form-control" name="pos">
<option value="Choose one" selected>
                <?php foreach($positions as $position): ?>
                <option value="<?= $position['id'] ?>"><?= $position['title_pos'] ?></option>
               <?php endforeach; ?>
            </select>
            <label for="type">Payment type:</label>
            <select class="form-control" name="type">
           <option value="Choose one" selected>
                <?php foreach($types as $type): ?>
                <option value="<?= $type['id'] ?>"><?= $type['title_type'] ?></option>
               <?php endforeach; ?>
            </select>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы