Как изменить SQL поисковый запрос на основе значений переменных, полученных из формы фильтра HTML? - PullRequest
0 голосов
/ 07 января 2020

У меня есть блок формы, в котором раскрываются параметры поиска, пользователь выбирает хотя бы одну опцию выбора и нажимает кнопку Search, которая отправляет форму для отправки в сценарий JS, который получает значения всех или некоторых из выбранных значений и в зависимости от параметров выбора, запрос SQL изменяется.

Но проблема в том, что мне нужно сделать комбинацию выбора и изменить вручную sql запрос для выполнения и получения результата. Но я хочу сделать кое-что, в чем запрос SQL будет автоматически изменен на основе полученных параметров.

Руководство по PLZ.

Вот как выглядит мой фильтр.

Filter Section

Ниже код JS Скрипт loadtable.js

$(document).ready(function(){

    var delay = 1000;

    // Campaign Submit Info
    $('[name="search_submit"]').click(function(e){              

              e.preventDefault();

              var lead_status = $('#filterformpost').find('#lead_status_select option:selected').val();
              var campaign_status = $('#filterformpost').find('#campaign_status_select option:selected').val();
              var company_name = $('#filterformpost').find('#company_name_select option:selected').val();
              var tech_area = $('#filterformpost').find('#tech_area_select option:selected').val();
              var firm_size = $('#filterformpost').find('#firm_size_select option:selected').val();
              var firm_type = $('#filterformpost').find('#firm_type_select option:selected').val();
              var country_name = $('#filterformpost').find('#country_name_select option:selected').val();
              var state_name = $('#filterformpost').find('#state_name_select option:selected').val();
              var start_date = $('#filterformpost').find('#start_date_search').val();
              var end_date = $('#filterformpost').find('#end_date_search').val();

             $.ajax({
                           type: "POST",

                           url: "http://localhost/CRM/server/search.php",                        
                           data: {
                                    "lead_status":lead_status, 
                                    "campaign_status":campaign_status,
                                    "company_name":company_name,
                                    "tech_area":tech_area,
                                    "firm_size":firm_size,
                                    "firm_type":firm_type,
                                    "country_name":country_name,
                                    "state_name":state_name,
                                    "start_date":start_date,
                                    "end_date":end_date                          
                                  },
                           beforeSend: function() {
                             $('.message_box').html(
                             '<img src="tenor.gif" width="40" height="40"/>'
                             );
                           }, 
                           success: function(data)
                           {
                           setTimeout(function() {
                           $('.message_box').html(data);
                           }, delay);
                           }                   

                         });








});

И PHP файл, в котором, я думаю, будет поисковый запрос search.php

<?php 

//SQL Search query


include('connection.php');

if ( ($_POST['lead_status']!="") ){


    $lead_status = $_POST['lead_status'];
    $campaign_status = $_POST['campaign_status'];


    $selectSQL = "SELECT * FROM `tbl_main_lead_info`";

    $result = $conn -> query ($selectSQL);

    while ($row = mysqli_fetch_array($result)) {   

      //here i get the select condition which i need to display over the html page using AJAX


}




}

?>

Решение, которое я пытаюсь, как показано ниже:

Часть тега раздела в dashboard.html

<!-- Filters -->

<div class="row">                
    <div class="col">
        <label><p><b>Select Filter</b></p></label>                    
    </div>          
</div>


<form action='' method='POST' class='filterformpost' id='filterformpost'>
    <div class="row">
        <div class="col span-1-of-4">
            <div class="row">
                <div class="col span-1-of-4">
                    Lead Status:
                </div>
                <div class="col span-2-of-4">
                    <select id='lead_status_select'><option>Select</option>
                        <?php
                            echo "<option value='All'>All</option>";                                                
                            echo "<option value='Active'>Active Leads</option>";
                            echo "<option value='Paused'>Paused Leads</option>";
                            echo "<option value='Expired'>Expired Leads</option>";
                            echo "<option value='Unsubscribed'>Unsubscribed</option>";
                        ?>                            
                    </select>
                </div>
            </div>                         
        </div>

        <div class="col span-1-of-3">
            <div class="row">
                <div class="col span-1-of-4">
                    Campaign Status:
                </div>
                <div class="col span-2-of-4">
                    <select id='campaign_status_select'><option>Select</option>
                        <?php     
                            echo "<option value='All'>All</option>";                                           
                            echo "<option value='Active'>Active</option>";
                            echo "<option value='Paused'>Paused</option>";
                            echo "<option value='Expired'>Expired</option>";
                            echo "<option value='Unsubscribed'>Unsubscribed</option>";
                        ?>                            
                    </select>
                </div>
            </div>                        
        </div>

        <div class="col span-1-of-3">
            <div class="row">
                <div class="col span-1-of-3">
                    Company Name:
                </div>
                <div class="col span-2-of-3">                                       

                        <?php                                            

                            include('./server/connection.php');

                            $sqlSelect="SELECT * FROM tbl_main_lead_info ORDER By Company ASC";
                            $result = $conn -> query ($sqlSelect);                                                                                                                                  
                            echo "<select id='company_name_select'>";
                            echo "<option>select</option>";    
                            echo "<option value='All'>All</option>";                                        
                            while ($row = mysqli_fetch_array($result)) {
                                echo "<option value='$row[Company]'> $row[Company] </option>";
                            }
                            echo "</select>";

                        ?>                          

                </div>
            </div>                        
        </div>

    </div>

    <div class="row">
        <div class="col span-1-of-4">
            <div class="row">
                <div class="col span-1-of-4">
                    State:
                </div>
                <div class="col span-2-of-4">                                       

                        <?php                                            

                            include('./server/connection.php');

                            $sqlSelect="SELECT * FROM tbl_state_info ORDER By StateName ASC";
                            $result = $conn -> query ($sqlSelect);                                           

                            $result = $conn -> query ($sqlSelect);                                          

                            echo "<select id='state_name_select' name='StateName'>";
                            echo "<option>select</option>";  
                            echo "<option value='All'>All</option>";                                          
                            while ($row = mysqli_fetch_array($result)) {
                                echo "<option value='$row[StateName]'> $row[StateName] </option>";
                            }
                            echo "</select>";

                        ?>                          

                </div>
            </div>

        </div>

        <div class="col span-1-of-3">
            <div class="row">
                <div class="col span-1-of-4">
                    Country:
                </div>
                <div class="col span-2-of-4">
                    <?php 

                        include('./server/connection.php');

                        $sqlSelect="SELECT * FROM tbl_country_info ORDER By CountryName ASC";
                        $result = $conn -> query ($sqlSelect);                                         

                        $result = $conn -> query ($sqlSelect);                                          

                        echo "<select id='country_name_select' name='CountryName'>";
                        echo "<option>select</option>";
                        echo "<option value='All'>All</option>";
                        while ($row = mysqli_fetch_array($result)) {
                            echo "<option value='$row[CountryName]'> $row[CountryName] </option>";
                        }
                        echo "</select>";

                    ?>
                </div>
            </div>                      
        </div>

        <div class="col span-1-of-3">
            <div class="row">
                <div class="col span-1-of-3">
                    Firm Type:
                </div>
                <div class="col span-2-of-3">
                    <?php 

                        include('./server/connection.php');

                        $sqlSelect="SELECT * FROM tbl_firm_type_info ORDER By FirmType_Value ASC";
                        $result = $conn -> query ($sqlSelect);                                    

                        $result = $conn -> query ($sqlSelect);                                          

                        echo "<select id='firm_type_select' name='FirmType'>";
                        echo "<option>select</option>";
                        echo "<option value='All'>All</option>";
                        while ($row = mysqli_fetch_array($result)) {
                            echo "<option value='$row[FirmType_Value]'> $row[FirmType_Value] </option>";
                        }
                        echo "</select>";

                    ?>       
                </div>
            </div>                         
        </div>

    </div>

    <div class="row">

        <div class="col span-1-of-4">
            <div class="row">
                <div class="col span-1-of-4">
                    Firm Size:
                </div>
                <div class="col span-2-of-4">

                    <?php 

                        include('./server/connection.php');

                        $sqlSelect="SELECT * FROM tbl_firm_size_info ORDER By FirmSize_Id ASC";
                        $result = $conn -> query ($sqlSelect);                                         


                        $result = $conn -> query ($sqlSelect);                                          


                        echo "<select id='firm_size_select' name='FirmSize'>";
                        echo "<option>select</option>";
                        echo "<option value='All'>All</option>";
                        while ($row = mysqli_fetch_array($result)) {
                            echo "<option value='$row[FirmSize_Value]'> $row[FirmSize_Value] </option>";
                        }
                        echo "</select>";

                    ?>

                </div>
            </div> 

        </div>

        <div class="col span-1-of-4">
             <div class="row">
                <div class="col span-1-of-3">
                    Tech Area:
                </div>
                <div class="col span-2-of-3">
                    <?php 

                        include('./server/connection.php');

                        $sqlSelect="SELECT * FROM tbl_tech_area_info ORDER By TechAreaName ASC";
                        $result = $conn -> query ($sqlSelect);                                         


                        $result = $conn -> query ($sqlSelect);                                          


                        echo "<select id='tech_area_select' name='TechAreaName'>";
                        echo "<option>select</option>";
                        echo "<option value='All'>All</option>";
                        while ($row = mysqli_fetch_array($result)) {
                            echo "<option value='$row[TechAreaName]'> $row[TechAreaName] </option>";
                        }
                        echo "</select>";

                    ?> 
                </div>
            </div>                          
        </div>                

        <div class="col span-1-of-4">
            <div class="row">
                <div class="col span-1-of-4">
                    Start Date:
                </div>
                <div class="col span-3-of-4">                          
                        <?php 

                        echo "<input type='date' id='start_date_search' name='startdate'>";

                        ?>                                    
                </div>
            </div> 
        </div>

        <div class="col span-1-of-4">
            <div class="row">
                <div class="col span-1-of-4">
                    End Date:
                </div>
                <div class="col span-3-of-4">                            
                        <?php 

                        echo "<input type='date' id='end_date_search' name='enddate'>";

                        ?>                                     
                </div>
            </div>                         
        </div>

    </div>

    <div class="row">               

        <div class="col span-1-of-3">
            <div class="row">
                <div class="col span-3-of-4">

                </div>               
            </div> 
        </div>    
        <div class="col span-1-of-3">
            <div class="row">
                <div class="col span-3-of-4">
                    <div class="row">
                        <div class="col span-1-of-3">
                            <label></label>
                        </div>
                        <div class="col span-2-of-3">
                            <input type="submit" name='search_submit' value="Search">
                        </div>
                    </div>
                </div>                        
            </div>
        </div>
    </div>

</form>

<div class="row">
    <div class="col span-1-of-3">
        <label></label>                            
    </div>
    <div class="col span-2-of-3">
        <div class="message_box" style="margin-left: 60px;">

        </div>
    </div>
</div>

В файле search.php

<?php 

    include('connection.php');

    $sqlFlag = 0;

    function queryDelimiter(){
        global $sqlFlag;
        if ($sqlFlag == 0){
            $sqlFlag = 1;
            return ' WHERE ';
        }else{
            return ' AND ';
        }
    }

    $selectSQL = "SELECT * FROM tbl_main_lead_info";

    if(isset($_POST['lead_status']) and strlen(trim($_POST['lead_status'])) > 0){
        $selectSQL .= queryDelimiter()."LeadStatus = '".$_POST['lead_status']."'";
    }

    if(isset($_POST['company_name']) and strlen(trim($_POST['company_name'])) > 0){
        $selectSQL .= queryDelimiter()."Company = '".$_POST['company_name']."'";
    }       

    if(isset($_POST['tech_area']) and strlen(trim($_POST['tech_area'])) > 0){
        $selectSQL .= queryDelimiter()."TechArea = '".$_POST['tech_area']."'";
    }

    if(isset($_POST['firm_size']) and strlen(trim($_POST['firm_size'])) > 0){
        $selectSQL .= queryDelimiter()."FirmSize = '".$_POST['firm_size']."'";
    }

    if(isset($_POST['firm_type']) and strlen(trim($_POST['firm_type'])) > 0){
        $selectSQL .= queryDelimiter()."FirmType = '".$_POST['firm_type']."'";
    }

    if(isset($_POST['country_name']) and strlen(trim($_POST['country_name'])) > 0){
        $selectSQL .= queryDelimiter()."Country = '".$_POST['country_name']."'";
    }

    if(isset($_POST['state_name']) and strlen(trim($_POST['state_name'])) > 0){
        $selectSQL .= queryDelimiter()."State = '".$_POST['state_name']."'";
    }

    // if(isset($_POST['start_date']) and strlen(trim($_POST['start_date'])) > 0){
    //     $selectSQL .= queryDelimiter()."LastContactDate >='".$_POST['start_date']."'";
    // }

    // if(isset($_POST['end_date']) and strlen(trim($_POST['end_date'])) > 0){
    //     $selectSQL .= queryDelimiter()."NextContactDate <= '".$_POST['end_date']."'";
    // }

    // $selectSQL .= " ORDER BY campaign_name";

    $result = $conn -> query ($selectSQL);



    echo json_encode($result);

?>

и loadtable.js Файл:

$(document).ready(function(){

    var delay = 1000;

    // Campaign Submit Info
    $('[name="search_submit"]').click(function(e){              

              e.preventDefault();

              var lead_status = $('#filterformpost').find('#lead_status_select option:selected').val();
              var campaign_status = $('#filterformpost').find('#campaign_status_select option:selected').val();
              var company_name = $('#filterformpost').find('#company_name_select option:selected').val();
              var tech_area = $('#filterformpost').find('#tech_area_select option:selected').val();
              var firm_size = $('#filterformpost').find('#firm_size_select option:selected').val();
              var firm_type = $('#filterformpost').find('#firm_type_select option:selected').val();
              var country_name = $('#filterformpost').find('#country_name_select option:selected').val();
              var state_name = $('#filterformpost').find('#state_name_select option:selected').val();
              var start_date = $('#filterformpost').find('#start_date_search').val();
              var end_date = $('#filterformpost').find('#end_date_search').val();

              console.log(lead_status)
              console.log(campaign_status)
              console.log(company_name)
              console.log(tech_area)
              console.log(firm_size)
              console.log(firm_type)
              console.log(country_name)
              console.log(state_name)
              console.log(start_date)
              console.log(end_date)

             $.ajax({
                           type: "POST",
                           // url: "https://tribalyze.com/CRM/server/login.php",
                           url: "server/search.php",                        
                           data: {
                                    "lead_status":lead_status, 
                                    "campaign_status":campaign_status,
                                    "company_name":company_name,
                                    "tech_area":tech_area,
                                    "firm_size":firm_size,
                                    "firm_type":firm_type,
                                    "country_name":country_name,
                                    "state_name":state_name,
                                    "start_date":start_date,
                                    "end_date":end_date                          
                                  },
                           beforeSend: function() {
                             $('.message_box').html(
                             '<img src="tenor.gif" width="40" height="40"/>'
                             );
                           }, 
                           success: function(data)
                           {
                           setTimeout(function() {
                           $('.message_box').html(data);
                           }, delay);
                           }                   

                         });





            });

            $.post('./server/search.php', function(result){

                console.log('Hello Console');

                $.each(result, function(){

                    console.log(result);

                });

            });  

});


1 Ответ

1 голос
/ 07 января 2020

Вам может потребоваться проверить, передается ли какое-либо значение для каждой переменной, и динамически построить запрос:

<?php
include('connection.php');

$sqlFlag = 0;
function queryDelimiter(){
    global $sqlFlag;
    if ($sqlFlag == 0){
        $sqlFlag = 1;
        return ' WHERE ';
    }else{
        return ' AND ';
    }
}

$selectSQL = "SELECT * FROM tbl_main_lead_info";

if(isset($_POST['campaign_name']) and strlen(trim($_POST['campaign_name'])) > 0){
    $selectSQL .= queryDelimiter()."campaign_name = '".$_POST['campaign_name']."'";
}

if(isset($_POST['lead_status']) and strlen(trim($_POST['lead_status'])) > 0){
    $selectSQL .= queryDelimiter()."lead_status = '".$_POST['lead_status']."'";
}

$selectSQL .= " ORDER BY campaign_name";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...