在GET上显示Select


Displaying Select on GET

如果我有一个选择表单,例如:

        <form action='?' method='get' name='form_filter' class="sortoptions" >
        <select name="sort" >  
          <option value="None">None</option>  
          <option value="PriceLow">Price (Low to High)</option>  
          <option value="PriceHigh">Price (High to Low)</option> 
          <option value="NameAZ">Name (A-Z)</option>  
          <option value="NameZA">Name (Z-A)</option>  
          </select>

我使用GET方法提交,但需要一种方法来确定它何时提交,以及在结果页面上显示选择的选项。

因此,如果选择了"价格(从高到低(",则在提交后,它将显示在结果页面的选择框中

有什么想法吗?

谢谢!

当您提交表单时(假设表单中有一个提交按钮(,所有数据都将发送到PHP,您将在$_GET(全局变量(中检索所有数据

$_GET['sort']

将包含选定的值。

然后,如果你想预先选择,你只需要在你的HTML 中添加一些PHP代码

<option value="PriceLow" <?php echo ((!empty($_GET['sort']) && $_GET['sort'] == 'PriceLow') ? 'selected="selected"' : '') ?>>Price (Low to High)</option>

您必须对select的每个选项执行相同的操作。这将允许您在第一次提交后预先选择好的选项。

解决方案2:

如果你不想在HTML代码中插入太多PHP,你可以将发布的值存储在JavaScriptvar中,然后在加载DOM时选择好的选项(例如使用像jQuery这样的好JS库(

您的HTML代码:

<select name="sort" >  
    <option value="None">None</option>  
    <option value="PriceLow">Price (Low to High)</option>  
    <option value="PriceHigh">Price (High to Low)</option> 
    <option value="NameAZ">Name (A-Z)</option>  
    <option value="NameZA">Name (Z-A)</option>  
</select>

以及<script>标签中的一些JS代码

// Need jQuery !
$(document).ready(function() {
    // Generate the selected var in JS using the value in PHP
    var selectedOption = '<?php echo $_GET['sort']; ?>';
    // Select the selected option and append the selected attribute
    $("select[name=sort] option[value=" + selectedOption + "]").attr('selected', 'selected');
});

加载页面后,此代码将自动选择好的选项。

信息:好的一点是你有一个更清晰和可维护的HTML代码。糟糕的是,如果客户端上没有启用JavaScript,您的自动选择将不起作用(当您使用PHP在HTML中添加"selected"时,它将始终起作用(。因此,你必须评估赞成和反对意见,并做出选择。

注意:您可以将操作保留为空,而不是"?">

$_GET['sort'] 

在提交的页面中,将为您提供所选的选项。检查表格是否已提交:

if(isset($_GET['submit'])) {
    // do something with the result
}

其中"提交"是提交按钮的名称。

试试这段代码,它可能是您想要的。我假设你是在.php文件或其他扩展名中写的,也许.html在其中启用了php代码(可能通过.htaccess文件(

<?php if (isset($_GET['sort'])){ ?>
<?php $sel= $_GET['sort']; # format? ?>
<strong><?php print($sel);?></strong>
<?php } ?>
<form action='' method='GET' name='form_filter' class="sortoptions" >
<select name="sort" >
    <?php
        $ff = Array(
            'None' => 'None',
            'PriceLow' => 'Price (Low to High)',
            'PriceHigh' => 'Price (High to Low)',
            'NameAZ' => 'Name (A-Z)',
            'NameZA' => 'Name (Z-A)',
        );
    ?>
    <?php foreach ($ff as $v => $t) {?>
        <option value="<?php print($v);?>" <?php if (isset($_GET['sort']) && ($_GET['sort'] == $v)) print('selected="selected"');?>"><?php print($t);?></option>
    <?php } ?>
</select>
<input name="submit" type="submit" />
</form>