首页 > 解决方案 > 如何在ajax和php中以递增和递减顺序进行选择?

问题描述

早上好,抱歉我的无知,但我无法选择订购表格中的产品,我正在更改 PHP 中的 Ajax 产品过滤器,我在 html 中制作了选择代码,然后我做了基础知识来接收php中的数据并给出在sql中显示的顺序,但它不起作用......你能帮我解决这个问题吗?下面是代码...

<html>
<div class="list-group">
    <form method="GET" name="form1">
    <p class="text" align="left">  <h3>Ordenar por:</h3>
        <select name="ordenar" onchange="this.form.submit()">
            <option value="nenhum"  Selected> </option>
            <option value="pasc" > Preço Ascendente </option>
            <option value="pdesc" > Preço Descendente </option>
        </select>
    </p> 
    </form> 
</div>


<?php

//fetch_data.php

if(!isset($_GET["ordenar"])){
$ordenar="pasc";
}
else{
$ordenar=$_GET["ordenar"];
}


if($ordenar=='pasc'){
$ordenapor="product_price asc";
}
if($ordenar=='pdesc'){
$ordenapor="product_price desc";
}

include('BD_Connect.php');      
        
if(isset($_POST["action"]))
{
        
    $query = "SELECT*FROM produto WHERE product_status = '1' order by $ordenapor";
    
    if(isset($_POST["minimum_price"], $_POST["maximum_price"]) && !empty($_POST["minimum_price"]) && !empty($_POST["maximum_price"]))
    {
        $query .= " AND product_price BETWEEN '".$_POST["minimum_price"]."' AND '".$_POST["maximum_price"]."' ";
    }
    if(isset($_POST["brand"]))
    {
        $brand_filter = implode("','", $_POST["brand"]);
        $query .= " AND product_brand IN('".$brand_filter."') ";
    }
    
    
    if(isset($_POST["ram"]))
    {
        $ram_filter = implode("','", $_POST["ram"]);
        $query .= " AND product_ram IN('".$ram_filter."') ";
    }
    if(isset($_POST["storage"]))
    {
        $storage_filter = implode("','", $_POST["storage"]);
        $query .= " AND product_storage IN('".$storage_filter."') ";
    }

    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    $total_row = $statement->rowCount();
    $output = '';
    if($total_row > 0)
    {
        foreach($result as $row)
        {
            $output .= '
            <div class="col-sm-4 col-lg-3 col-md-3">
                <div style="border:1px solid #ccc; border-radius:5px; padding:16px; margin-bottom:16px; height:450px;">
                    <img src="image/'. $row['product_image'] .'" alt="" class="img-responsive" >
                    <p align="center"><strong><a href="#">'. $row['product_name'] .'</a></strong></p>
                    <h4 style="text-align:center;" class="text-danger" >'. $row['product_price'] .'</h4>
                    <p>Camera : '. $row['product_camera'].' MP<br />
                    Brand : '. $row['product_brand'] .' <br />
                    RAM : '. $row['product_ram'] .' GB<br />
                    Storage : '. $row['product_storage'] .' GB </p>
                </div>

            </div>
            ';
        }
    }
    else
    {
        $output = '<h3>No Data Found</h3>';
    }
    echo $output;
}

?>
</html>

<?php 

//index.php

include('BD_Connect.php');
?>


<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Product filter in php</title>

    <script src="jquery-1.10.2.min.js"></script>
    <script src="jquery-ui.js"></script>
    <script src="bootstrap.min.js"></script>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link href = "css/jquery-ui.css" rel = "stylesheet">
    <!-- Custom CSS -->
    <link href="css/style.css" rel="stylesheet">
</head>

<body>
    <!-- Page Content -->
    <div class="container">
        <div class="row">
            <br />
            <h2 align="center">Ajax Product Filters in PHP</h2>
            <br />
            <div class="col-md-3">        

                <div class="list-group">
                    <h3>Price</h3>
                    <input type="hidden" id="hidden_minimum_price" value="0" />
                    <input type="hidden" id="hidden_maximum_price" value="1500" />
                    <p id="price_show">50 - 1500</p>
                    <div id="price_range"></div>
                </div>  
                
                <div class="list-group">
                    <h3>Brand</h3>
                    <div style="height: 180px; overflow-y: auto; overflow-x: hidden;">
                    <?php

                    $query = "SELECT DISTINCT(product_brand),product_id FROM produto WHERE product_status = '1' ORDER BY product_id DESC;";
                    $statement = $connect->prepare($query);
                    $statement->execute();
                    $result = $statement->fetchAll();
                    foreach($result as $row)
                    {
                    ?>
                    <div class="list-group-item checkbox">
                        <label><input type="checkbox" class="common_selector brand" value="<?php echo $row['product_brand']; ?>"  > <?php echo $row['product_brand']; ?></label>
                    </div>
                    <?php
                    }

                    ?>
                    </div>
                </div>
                

                <div class="list-group">
                    <h3>RAM</h3>
                    <?php

                    $query = "
                    SELECT DISTINCT(product_ram) FROM produto WHERE product_status = '1' ORDER BY product_ram DESC;
                    ";
                    $statement = $connect->prepare($query);
                    $statement->execute();
                    $result = $statement->fetchAll();
                    foreach($result as $row)
                    {
                    ?>
                    <div class="list-group-item checkbox">
                        <label><input type="checkbox" class="common_selector ram" value="<?php echo $row['product_ram']; ?>" > <?php echo $row['product_ram']; ?> GB</label>
                    </div>
                    <?php    
                    }

                    ?>
                </div>
                
                <div class="list-group">
                    <h3>Internal Storage</h3>
                    <?php
                    $query = "
                    SELECT DISTINCT(product_storage) FROM produto WHERE product_status = '1' ORDER BY product_storage DESC;
                    ";
                    $statement = $connect->prepare($query);
                    $statement->execute();
                    $result = $statement->fetchAll();
                    foreach($result as $row)
                    {
                    ?>
                    <div class="list-group-item checkbox">
                        <label><input type="checkbox" class="common_selector storage" value="<?php echo $row['product_storage']; ?>"  > <?php echo $row['product_storage']; ?> GB</label>
                    </div>
                    <?php
                    }
                    ?>  
                </div>
            </div>

            <div class="col-md-9">
                <br />
                <div class="row filter_data">

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

    </div>
<style>
#loading
{
    text-align:center; 
    background: url('loader.gif') no-repeat center; 
    height: 150px;
}
</style>

<script>
$(document).ready(function(){

    filter_data();

    function filter_data()
    {
        $('.filter_data').html('<div id="loading" style="" ></div>');
        var action = 'fetch_data';
        var minimum_price = $('#hidden_minimum_price').val();
        var maximum_price = $('#hidden_maximum_price').val();
        var brand = get_filter('brand');
        var ram = get_filter('ram');
        var storage = get_filter('storage');
        $.ajax({
            url:"fetch_data.php",
            method:"POST",
            data:{action:action, minimum_price:minimum_price, maximum_price:maximum_price, brand:brand, ram:ram, storage:storage},
            success:function(data){
                $('.filter_data').html(data);
            }
        });
    }

    function get_filter(class_name)
    {
        var filter = [];
        $('.'+class_name+':checked').each(function(){
            filter.push($(this).val());
        });
        return filter;
    }

    $('.common_selector').click(function(){
        filter_data();
    });

    $('#price_range').slider({
        range:true,
        min:50,
        max:1500,
        values:[50, 1500],
        step:10,
        stop:function(event, ui)
        {
            $('#price_show').html(ui.values[0] + ' - ' + ui.values[1]);
            $('#hidden_minimum_price').val(ui.values[0]);
            $('#hidden_maximum_price').val(ui.values[1]);
            filter_data();
        }
    });

});

</script>


</body>

</html>

<?php 

//database_connection.php

$connect = new PDO("mysql:host=remotemysql.com;dbname=D6DVgw31iE", "D6DVgw31iE", "PQkTajbCkv");


?>

标签: javascriptphphtmlsqlajax

解决方案


推荐阅读