【问题标题】:PHP How can I sort results with accumulation in the URL by using GET methodPHP如何使用GET方法对URL中累积的结果进行排序
【发布时间】:2015-09-29 18:52:57
【问题描述】:

我正在研究一个排序函数,它应该使用两种不同的 html 表单对我的结果进行排序。第一种形式用于排序 A-Z、Z-A、Price-Asc、Price-Desc。第二个将用于显示每页不同数量的结果。我的问题是如何使这些表格“一起”工作。例如,在第一个表单中的“更改”事件中,我将在 URL 中得到类似“?orderBy =“AZ”的内容。然后,如果我决定更改每页的结果数,我想在 url 中保留当前的 ​​GET 参数并添加另一个像“?orderBy =“AZ?perPage = 12”。我在一个网站上看到了这种功能,我需要做同样的功能,但我不确定这些概念以及这个东西应该如何工作。非常感谢每一个答案和分享的想法!

<form method="get" id="form_sort">
<select name="sort" onchange="form_sort.submit()">
    <option value="">Please Choose...</option>
    <option value="name">name</option>
    <option value="price">price</option>
</select>
</form>

<form method="get" id="form_order">
<select name="order" onchange="form_order.submit()">
    <option value="">Please Choose...</option>
    <option value="asc">ASC</option>
    <option value="desc">DESC</option>
</select>
</form>

<form method="get" id="form_limit">
<select name="limit" onchange="form_limit.submit()">
    <option value="">Please Choose...</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
</form>

【问题讨论】:

  • 发布代码鞭打。我们不会为您构建东西,我们会修复您正在构建的东西。
  • 我不希望你为我构建任何东西,我只是征求意见和一些关于这种排序应该如何工作的概念。不过谢谢,下次我会记住的。
  • whiplash,您的问题下方有一个“编辑”按钮,您可以发布代码。无需等待下一次。代码使您的问题更清晰,因此我们可以看到您要做什么。如果您与墨西哥人讨论炸玉米饼,您会说西班牙语。如果您与代码人员谈论 PHP,那么您就是在谈论代码。用他们的母语解释事情会更容易。
  • 我会在您发布代码后立即删除我的反对票 :)
  • 这是一些代码..主要问题是我需要使用不同的表单而没有任何提交按钮,这就是我制作 onchange 事件的原因,但我不知道这是否应该像这样工作这个。

标签: php codeigniter sorting url


【解决方案1】:

表单会自动为您构建一个查询字符串(使用 GET)。如果您可以在页面加载时保持选中 selected 值,那么每次更新表单时,相同的值将保持选中状态。

这是一个例子:

<form method="get">
    <select name="sort">
        <option value="">Please Choose...</option>
        <option value="name"<?=isset($_GET['sort']) && $_GET['sort']=='name' ? ' selected' : ''?>>name</option>
        <option value="price"<?=isset($_GET['sort']) && $_GET['sort']=='price' ? ' selected' : ''?>>price</option>
    </select>
    <select name="order">
        <option value="">Please Choose...</option>
        <option value="asc"<?=isset($_GET['order']) && $_GET['order']=='asc' ? ' selected' : ''?>>ASC</option>
        <option value="desc"<?=isset($_GET['order']) && $_GET['order']=='desc' ? ' selected' : ''?>>DESC</option>
    </select>
    <select name="limit">
        <option value="">Please Choose...</option>
        <option value="1"<?=isset($_GET['limit']) && $_GET['limit']==1 ? ' selected' : ''?>>1</option>
        <option value="2"<?=isset($_GET['limit']) && $_GET['limit']==2 ? ' selected' : ''?>>2</option>
        <option value="3"<?=isset($_GET['limit']) && $_GET['limit']==3 ? ' selected' : ''?>>3</option>
    </select>

    <input type="submit">

</form>

【讨论】:

  • 我不完全确定这是他正在寻找的答案,因为他提到有 2 个单独的表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多