Категория и Бренд оба ищут одновременно в php - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю сайт электронной коммерции.Пример, если я выбрал категорию «Tv», а бренд - «LG», соответствующий продукт должен отображаться. Но он не работает должным образом. Не отображается сообщение о том, что я до сих пор пытался описать.

Дизайн формы

Категория

<div align="left">
  <li class="list-group-item list-group-item-action active" > 
   <h4>Category</h4></li>
 <li class="list-group-item list-group-item-action" id="categories"></li>
  </div>

Марка

<div align="left" >
    <li class="list-group-item list-group-item-action active" ><h4>Brand</h4></li>
        <li class="list-group-item list-group-item-action" id="brands"></li>
</div>

Продукция

   <div class="panel-heading">
                Products
            </div>
            <div class="panel-body" id="Products" >

            </div>

jquery

Категория

 function getCategory(){
        $.ajax({
            type: 'GET',
            url: 'get_category.php' ,
            dataType: 'JSON',
            success: function (data)
            {
                for (var i = 0; i < data.length; i++)
                {
                    var catname = data[i].catname;
                    var id = data[i].id;
                    $('#categories').append('<a href="#" cid= '+ id + '  class="list-group-item list-group-item-action">' + '<b>'+ data[i].catname + '<b>' + '</a>');
                }
            },
            error: function (xhr, status, error)
               {
                console.log(xhr.message)
            }

        });
    }

Марка

   function getBrand(){
        $.ajax({
            type: 'GET',
            url: 'all_brand.php' ,
            dataType: 'JSON',
            success: function (data) {
                console.log(data);
                for (var i = 0; i < data.length; i++)
                {
                    var id1 = data[i].id;
                    $('#brands').append('<a href="#"  bid= '+ id1 + '  class="list-group-item list-group-item-action">' + '<b>'+ data[i].brand_name + '<b>' + '</li>');
                }
            },
            error: function (xhr, status, error) {
                alert(xhr.responseText);
            }
        });
    }

Категория и бренд успешно воспроизводятся.

Продукт

, если я нажимаю категорию и бренд в тот момент, когда отображается соответствующий продукт.вот как я написал запрос

$(document).ready(function() {
    $("#categories a.list-group-item").click(function () {
        var cat = $(this).attr('cid');


        var brand = $("#brands a.list-group-item").click();
        var brand = $(this).attr('bid');
        $.ajax({
            url: 'get_search.php',
            type: 'post',
           data: {cat: cat, brand: brand},
          //  data: {cat: cat},
            dataType: 'json',
            success: function (data) {
                var len = data.length;
                console.log(data);
                $("#Products").empty();
                for (var i = 0; i < data.length; i++) {
                    var price = data[i].price;
                    var image = data[i].image;
                    var description = data[i].description;
                    $("#Products").append("<div class='col-md-4'> " +
                    "<div class='panel panel-info' id='Products'>" +
                    "<div class='card-body'>" +
                    "<div class='panel-heading'>" + "<h4> " + description + "</h4> " +
                    "<p class='panel-body'>" + "<h3> " + price + "</h3>" +
                    "<p class='panel-body'> <img class='card-img-top' style='width:250px' height='250px' id='theImg' src='images/" + image + "' /> </p>" +
                    " <a href='#' class='btn btn-primary'>View More</a> </div> </div></div> </div>");
                }
            }
        });
    });
});

get_search.php

   <?php
include("db.php");

$stmt = $conn->prepare("SELECT id,cat_id,brand_id,price,description,image,keywords from products WHERE cat_id = ? AND brand_id = ? ");
$stmt->bind_result($id,$cat_id,$brand_id,$price,$description,$image,$keywords);

$cat_id = $_POST["cat"];
$brand = $_POST['brand'];
$stmt->bind_param("ss", $cat_id,$brand);
$stmt->bind_result($id,$cat_id,$brand_id,$price,$description,$image,$keywords);



if ($stmt->execute()) {
    while ( $stmt->fetch() ) {
        $output[] = array ("id"=>$id, "cat_id"=>$cat_id,"brand_id"=>$brand_id,"price"=>$price,"description"=>$description,"image"=>$image,"keywords"=>$keywords);
    }

    echo json_encode( $output );
}
$stmt->close();


?>

1 Ответ

0 голосов
/ 15 ноября 2018

Я знал, что была причина, по которой я не любил mysqli.Предложите вам перейти на использование PDO, и приведенный ниже код даст вам результаты, которые вы ищете.Сборка массива для возврата в формате JSON оставлена ​​для вас.

$conn = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4','username','password');

$_POST["cat"]   = 'TV';
$_POST['brand'] = 'LG';

$stmt = $conn->prepare('SELECT id,description from products
                        WHERE cat_id LIKE :catid AND brand_id LIKE :brand');

$cat_id = '%' . $_POST["cat"]   . '%';
$brand  = '%' . $_POST['brand'] . '%';

$stmt->execute([':catid' => '%' . $cat_id . '%',
                ':brand' => '%' . $brand  . '%']);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($results);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...