Php 根据“选择框”的选定值筛选结果

Php 根据“选择框”的选定值筛选结果,php,jquery,ajax,smarty,prestashop,Php,Jquery,Ajax,Smarty,Prestashop,我已经找了很长时间了,但是我仍然没有找到一个合适的答案来回答我的问题。我正在尝试根据用户将从选择框中选择的值筛选结果。但是,selectbox是从数据库填充的,其长度会有所不同。 第一个选择条目将为空,因此将显示所有匹配值。但是,当从选择框中选择不同的值时,所有不匹配的ITME都需要消失。最容易做到这一点的方法可能是使用Ajax,但我目前还不知道如何 我在prestashop上开发,所以项目的前端使用smarty。所以常规的PHP方法无法解决这个问题 因此php函数基本上会将相关项的信息放入数组

我已经找了很长时间了,但是我仍然没有找到一个合适的答案来回答我的问题。我正在尝试根据用户将从选择框中选择的值筛选结果。但是,selectbox是从数据库填充的,其长度会有所不同。 第一个选择条目将为空,因此将显示所有匹配值。但是,当从选择框中选择不同的值时,所有不匹配的ITME都需要消失。最容易做到这一点的方法可能是使用Ajax,但我目前还不知道如何

我在prestashop上开发,所以项目的前端使用smarty。所以常规的PHP方法无法解决这个问题

因此php函数基本上会将相关项的信息放入数组中,然后将其推送到smarty进行显示。突袭

像这样:

    {foreach from=$projectsArray key=id item=projectOpen}
    {/foreach}
从那里访问所有信息并在阵列中构建结构非常容易

下面是我当前的ajax代码,用于在更改选择框时执行.php文件

选择框:

  <select name="projects" id="projects" class="projects" size="{$project_options|@count eq 1}">
        <option value="blank" selected="selected">All productsSelected</option>
        {html_options values=$project_values output=$project_options}
    </select>  
但是接下来我该怎么做呢?通过某个执行的查询更改数组值并替换前一个查询的全部内容更容易,还是可以根据selectbox值以某种方式对其进行过滤


BR的

事实上,我试图通过绕山一圈来实现我的解决方案

由于forach项连接到数据库中的selectbox项,所以我能够使用简单的jquery来实现这个技巧并过滤它们

这是代码。也许将来有人会觉得它有用。这显然是因为forach循环内部的原因

    <script type="text/javascript">
$(function(){
$('#projects').change(function() {
    if($(this).val() == 'blank'){
        $('.project_room_{$projectOpen.id_projekt_rooms}').hide();
        $('.rooms_view_container').show();
    }   
    else {
        $('.project_room_{$projectOpen.id_projekt_rooms}').hide();
        var selectVal = $('#projects :selected').val();
        $('.project_room_'+selectVal).show(); } 
});
}); 
    </script>

BR

要清楚,一旦有人选择了一个选项,您想从选择框中删除所有其他选项吗?为什么?如果他们改变主意,想选择别的东西怎么办?他们必须重新加载页面。不,也许我的解释不够清楚。我想从填充的forach中删除与所选框值不匹配的其他项。它们在数据库中连接,每个forach项都有一个ID_rooms列,选择框填充一个rooms表,其中它们有一个ID。
    $_POST['id']
    <script type="text/javascript">
$(function(){
$('#projects').change(function() {
    if($(this).val() == 'blank'){
        $('.project_room_{$projectOpen.id_projekt_rooms}').hide();
        $('.rooms_view_container').show();
    }   
    else {
        $('.project_room_{$projectOpen.id_projekt_rooms}').hide();
        var selectVal = $('#projects :selected').val();
        $('.project_room_'+selectVal).show(); } 
});
}); 
    </script>