Во-первых, я хотел бы сказать, что я не лучший разработчик PHP.При этом я хотел бы получить некоторый вклад в мой код.Я потратил час, пытаясь заставить это работать, и я наконец получил это, но я хотел бы знать, является ли это лучшим способом сделать это.Я спрашиваю сообщество, потому что я пытаюсь стать лучшим разработчиком.
Я создаю форму поиска, которая использует метод POST для отправки значений на страницу поиска.Затем эта страница принимает значения, проверяет условные операторы и обновляет запрос на основе результатов.
Вот мой код.
Код формы поиска
echo '<form method="post" class="cat-search" action="'.esc_url( home_url( '/search' ) ).'" role="search" >
<div class="gender-fields">
<span class="label-wrap">
<input type="radio" name="gender" value="male" id="male">
<label for="male">Male</label>
</span>
<span class="label-wrap">
<input type="radio" name="gender" value="female" id="female">
<label for="female">Female</label>
</span>
<span class="label-wrap">
<input type="radio" name="gender" value="" id="both">
<label for="both">Both</label>
</span>
</div>
<select class="cat-letters" name="letter">
<option value="">Search by letter</option>';
foreach ( $categories as $category ) {
echo'<option value="'.$category->slug.'">'.$category->name.'</option>';
}
echo '</select>
<input class="search-submit" value="Search" type="submit" />
</form>';
Условный код страницы поиска
$let = esc_html($_POST["letter"]);
$gen = esc_html($_POST["gender"]);
if ( !empty($_POST["gender"]) && !empty($_POST["letter"])) {
$cat_array = array($let,$gen);
$cat_string = implode("+", $cat_array);
} else if ( empty($_POST["gender"] ) ) {
$cat_string = $let;
} else {
$cat_string = $gen;
}
Сначала я попытался использовать функцию isset()
вместо empty()
, но просто не смог заставить ее работать.
Этоправильный способ сделать это, или есть лучший способ достичь тех же результатов?
* У меня никогда не было проблем с формой, проблема была с условными утверждениями.