Сохраняйте выпадающие списки HTML после нескольких выборов - PullRequest
0 голосов
/ 13 сентября 2018

В настоящее время у меня есть 5 отдельных раскрывающихся списков HTML. Всякий раз, когда я выбираю один, он фильтрует остальные четыре. Однако после выполнения другого выбора он по существу игнорирует первый выбор, сделанный при фильтрации выпадающих меню после второго выбора. Я мог бы написать запрос для каждой возможности выбора, но это, очевидно, не идеально. Будет ли способ объединить все в один запрос, где он будет отфильтровывать другие выпадающие списки, независимо от того, есть ли у него только один выбор, есть 3-4 различных варианта? Мне просто нужно, чтобы выпадающие списки фильтровали друг друга во всех возможных вариантах.

Код Index.php (по сути, просто код JavaScript в моем php-файле:

// ----- Function that sends values to index-ajax.php which filters the dropdowns -----
$(document).ready(function(){


    $("#collector, #date, #status, #repcode, #balancegroup").change(function(e){
    showUser(
      $("#collector").val()
      ,$("#date").val()
      ,$("#status").val()
      ,$("#repcode").val()
      ,$("#balancegroup").val()
    );
  });

    $("#collector").change(function(e){
        $.post('index-ajax.php',{filter:'Name',by:$(this).val()},function(data){
            $("#date .choice").hide();
            $("#status .choice").hide();
            $("#repcode .choice").hide();
            $("#balancegroup .choice").hide();
            $.each(data, function(key,row) {
                $("#date option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item ) != -1;
                }).show();
                $("#status option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item1 ) != -1;
                }).show();
                $("#repcode option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item2 ) != -1;
                }).show();
                $("#balancegroup option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item3 ) != -1;
                }).show();
            });
        },"JSON");
    });

    $("#date").change(function(e){
        $.post('index-ajax.php',{filter:'Date',by:$(this).val()},function(data){
            $("#collector .choice").hide();
            $("#status .choice").hide();
            $("#repcode .choice").hide();
            $("#balancegroup .choice").hide();
            $.each(data, function(key,row) {
                $("#collector option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item ) != -1;
                }).show();
                $("#status option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item1 ) != -1;
                }).show();
                $("#repcode option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item2 ) != -1;
                }).show();
                $("#balancegroup option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item3 ) != -1;
                }).show();
            });
        },"JSON");
    });

    $("#status").change(function(e){
        $.post('index-ajax.php',{filter:'Status',by:$(this).val()},function(data){
            $("#collector .choice").hide();
            $("#date .choice").hide();
            $("#repcode .choice").hide();
            $("#balancegroup .choice").hide();
            $.each(data, function(key,row) {
                $("#collector option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item ) != -1;
                }).show();
                $("#date option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item1 ) != -1;
                }).show();
                $("#repcode option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item2 ) != -1;
                }).show();
                $("#balancegroup option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item3 ) != -1;
                }).show();
            });
        },"JSON");
    });

    $("#repcode").change(function(e){
        $.post('index-ajax.php',{filter:'Report Code',by:$(this).val()},function(data){
            $("#collector .choice").hide();
            $("#date .choice").hide();
            $("#status .choice").hide();
            $("#balancegroup .choice").hide();
            $.each(data, function(key,row) {
                $("#collector option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item ) != -1;
                }).show();
                $("#date option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item1 ) != -1;
                }).show();
                $("#status option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item2 ) != -1;
                }).show();
                $("#balancegroup option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item3 ) != -1;
                }).show();
            });
        },"JSON");
    });

    $("#balancegroup").change(function(e){
        $.post('index-ajax.php',{filter:'Balance Group',by:$(this).val()},function(data){
            $("#collector .choice").hide();
            $("#date .choice").hide();
            $("#status .choice").hide();
            $("#repcode .choice").hide();
            $.each(data, function(key,row) {
                $("#collector option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item ) != -1;
                }).show();
                $("#date option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item1 ) != -1;
                }).show();
                $("#status option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item2 ) != -1;
                }).show();
                $("#repcode option").filter(function(i){
                    return $(this).attr("value").indexOf( row.item3 ) != -1;
                }).show();
            });
        },"JSON");
    });

});

Индекс-ajax.php код:

<?php

$host="xxxxxx";
$dbName="xxxxxxxxx";
$dbUser="xxxxxxxx";
$dbPass="xxxx";
$dbh = new PDO("sqlsrv:Server=$host;Database=$dbName", $dbUser, $dbPass);
//$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );


if (isset($_POST['filter']) and isset($_POST['by'])) {

    $results = array();

    if (!empty($_POST['by'])) {
// -----------------------------------------------------
        if ($_POST['filter'] == 'Name') {
            $sql = "SELECT DISTINCT [Date Group - Filter] as item,
                   [Line Status] as item1,
                   [Parent Report Code] as item2,
                   [Balance Group - Filter] as item3
            FROM [Test_Spec_Bill]
            WHERE [Collector Name] = ? AND [Next Bill Date] = 'Yes'"; }
// -----------------------------------------------------
        if ($_POST['filter'] == 'Date') {
            $sql = "SELECT DISTINCT [Collector Name] as item,
                   [Line Status] as item1,
                   [Parent Report Code] as item2,
                   [Balance Group - Filter] as item3
            FROM [Test_Spec_Bill]
            WHERE [Date Group - Filter] = ? AND [Next Bill Date] = 'Yes'"; }
// -----------------------------------------------------
        if ($_POST['filter'] == 'Status') {
            $sql = "SELECT DISTINCT [Collector Name] as item,
                    [Date Group - Filter] as item1,
                    [Parent Report Code] as item2,
                    [Balance Group - Filter] as item3
            FROM [Test_Spec_Bill]
            WHERE [Line Status] = ? AND [Next Bill Date] = 'Yes'"; }
// -----------------------------------------------------
        if ($_POST['filter'] == 'Report Code') {
            $sql = "SELECT DISTINCT [Collector Name] as item,
                   [Date Group - Filter] as item1,
                   [Line Status] as item2,
                   [Balance Group - Filter] as item3
            FROM [Test_Spec_Bill]
            WHERE [Parent Report Code] = ? AND [Next Bill Date] = 'Yes'"; }
// -----------------------------------------------------
        if ($_POST['filter'] == 'Balance Group') {
            $sql = "SELECT DISTINCT [Collector Name] as item,
                   [Date Group - Filter] as item1,
                   [Line Status] as item2,
                   [Parent Report Code] as item3
            FROM [Test_Spec_Bill]
            WHERE [Balance Group - Filter] = ? AND [Next Bill Date] = 'Yes'"; }
// -----------------------------------------------------
        $stmt = $dbh->prepare($sql);
        $stmt->execute(array($_POST['by']));
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $results[] = $row; }
    }

    echo json_encode( $results );
    exit;
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...