Снова получать данные из базы данных при изменении опции выбора

#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:

Предположим, вы хотите обновлять свою страницу каждый раз, когда выбираете значение:

  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>
      
  2. В вашем 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>
  
  1. Для сохранения значения после обновления:
 <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, выбрав свой город и нажав кнопку, чтобы отправить информацию