Как добавить разбиение на страницы для фильтрации страницы продукта (используется jquery, PHP) пожалуйста, помогите мне изменить мой код
When i try to add pagination with limit of 5 products on each page maximum, it only show 5 products but next and previous page is not working. I think something is collapsing wtih jquery script. please tell me how to add pagination to this. I am using my script as given below:-
Что я уже пробовал:
index.php страница здесь--
<?php //index.php include('database_connection.php'); ?> <!DOCTYPE html> <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="js/jquery-1.10.2.min.js"></script> <script src="js/jquery-ui.js"></script> <script src="js/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">Advance 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="65000" /> <p id="price_show">1000 - 65000</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) FROM product 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 product 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 product 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:1000, max:65000, values:[1000, 65000], step:500, 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>
моя страница fetch_data находится здесь-
<?php //fetch_data.php include('database_connection.php'); if(isset($_POST["action"])) { $query = " SELECT * FROM product WHERE product_status = '1' "; 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"><a href="#">'. $row['product_name'] .'</a></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; } >
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]
Если вы сначала не исправите эту уязвимость, вам не нужно будет добавлять разбиение на страницы; кто-то воспользуется этой уязвимостью, чтобы уничтожить вашу базу данных.