[英]Get data from database again, when changing select option
I have a select dropdown like this: 我有一个像这样的选择下拉列表:
<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>
And I'm getting some radio buttons like this: 我得到一些像这样的单选按钮:
<?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>";
}
?>
As you can see, these radio buttons are depending on the select option choice. 如您所见,这些单选按钮取决于选择选项。 That means, as soon as the user changes the selects option, the PHP code have to refresh but the select boxes choice has to stay logged in.
这意味着,只要用户更改了选择选项,PHP代码就必须刷新,但选择框选项必须保持登录状态。
What is the proper/common way to do this? 这样做的正确/常用方法是什么?
Supossing that you wanna refresh your page every time you choose a value: 假设您每次选择值时都要刷新页面:
create this javascript 创建这个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>
In your html code, add value to your options: 在您的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']) && $_GET['city'] == 'City1' ? 'selected' : ''; ?>>Option 1</option>
<option value="City2" <?php echo isset($_GET['city']) && $_GET['city'] == 'City2' ? 'selected' : ''; ?>>Option 2</option>
<option value="City3" <?php echo isset($_GET['city']) && $_GET['city'] == 'City3' ? 'selected' : ''; ?>>Option 3</option>
<option value="City4" <?php echo isset($_GET['city']) && $_GET['city'] == 'City4' ? 'selected' : ''; ?>>Option 4</option>
</select>
Edited version: 编辑版:
If you want avoid the use of javascript to do this task you can change your approach like that: 如果你想避免使用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']) && $_GET['city'] == 'City1' ? 'selected' : ''; ?>>Option 1</option>
<option value="City2" <?php echo isset($_GET['city']) && $_GET['city'] == 'City2' ? 'selected' : ''; ?>>Option 2</option>
<option value="City3" <?php echo isset($_GET['city']) && $_GET['city'] == 'City3' ? 'selected' : ''; ?>>Option 3</option>
<option value="City4" <?php echo isset($_GET['city']) && $_GET['city'] == 'City4' ? 'selected' : ''; ?>>Option 4</option>
</select>
<input type="submit" value="search by city">
</form>
Hope this helps you 希望这对你有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.