#javascript #php #html #forms
#javascript #php #HTML #формы
Вопрос:
У меня есть выпадающий список выбора, подобный этому:
<select name="city" id="order_form_select">
<option value="" disabled selected>Ort ↓</option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
</select>
И я получаю несколько переключателей, подобных этому:
<?php
$statement = $pdo->prepare('SELECT some_column FROM my_table WHERE some_value = "abc" AND city = :city');
$statement->execute(array('city' => $city));
$row = $statement->rowCount();
if ($row == 0) {
echo "<input type="radio" name="something" value="option1">Option 1</p>";
}
$statement = $pdo->prepare('SELECT some_column FROM my_table WHERE some_value = "xyz" AND city = :city');
$statement->execute(array('city' => $city));
$row = $statement->rowCount();
if ($row == 0) {
echo "<input type="radio" name="something" value="option2">Option 2</p>";
}
?>
Как вы можете видеть, эти переключатели зависят от выбора опции выбора. Это означает, что как только пользователь изменяет параметр выбора, код PHP должен обновляться, но выбор полей выбора должен оставаться в системе.
Каков правильный / распространенный способ сделать это?
Комментарии:
1. Можете ли вы рассказать нам, с какой проблемой вы столкнулись?
2. вы спрашиваете, как постоянно сохранять выбор в базе данных или просто переходить к следующей загрузке страницы?
3. @atoms «просто переходите к следующей загрузке страницы»
Ответ №1:
Предположим, вы хотите обновлять свою страницу каждый раз, когда выбираете значение:
-
создайте этот javascript
<script type="text/javascript"> window.onload = function () { var citySelector = document.getElementById('order_form_select'); citySelector.addEventListener('change', function () { if (this.value) { window.location = 'yourphp.php?city=' this.value } }, false); } </script>
-
В вашем html-коде добавьте значение к вашим параметрам:
<select name="city" id="order_form_select">
<option value="" disabled selected>Ort ↓</option>
<option value="City1">Option 1</option>
<option value="City2">Option 2</option>
<option value="City3">Option 3</option>
<option value="City4">Option 4</option>
</select>
- Для сохранения значения после обновления:
<select name="city" id="order_form_select">
<option value="" disabled <?php echo !isset($_GET['city']) ? 'selected' : ''; ?>>Ort ↓</option>
<option value="City1" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City1' ? 'selected' : ''; ?>>Option 1</option>
<option value="City2" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City2' ? 'selected' : ''; ?>>Option 2</option>
<option value="City3" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City3' ? 'selected' : ''; ?>>Option 3</option>
<option value="City4" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City4' ? 'selected' : ''; ?>>Option 4</option>
</select>
Отредактированная версия:
Если вы хотите избежать использования javascript для выполнения этой задачи, вы можете изменить свой подход следующим образом:
<form action="yourphpfile.php" method="GET">
<select name="city" id="order_form_select">
<option value="" disabled <?php echo !isset($_GET['city']) ? 'selected' : ''; ?>>Ort ↓</option>
<option value="City1" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City1' ? 'selected' : ''; ?>>Option 1</option>
<option value="City2" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City2' ? 'selected' : ''; ?>>Option 2</option>
<option value="City3" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City3' ? 'selected' : ''; ?>>Option 3</option>
<option value="City4" <?php echo isset($_GET['city']) amp;amp; $_GET['city'] == 'City4' ? 'selected' : ''; ?>>Option 4</option>
</select>
<input type="submit" value="search by city">
</form>
Надеюсь, это поможет вам
Комментарии:
1. Я отредактировал свой ответ из-за недопонимания с вашим вопросом
2. Привет, спасибо за ваш ответ. Но что делать, если Javascript отключен в браузере пользователя?
3. Привет, Дэвид, я отредактировал свой ответ, вы можете использовать собственные функции html, выбрав свой город и нажав кнопку, чтобы отправить информацию