繁体   English   中英

更改选择选项时,再次从数据库获取数据

[英]Get data from database again, when changing select option

我有一个像这样的选择下拉列表:

<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. 创建这个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']) && $_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>

编辑版:

如果你想避免使用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>

希望这对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM