#javascript #php #mysql #ajax #filter
#javascript #php #mysql #ajax #Фильтр
Вопрос:
// это мой productContent1.php файл, я хочу отобразить параметры поиска фильтра продукта, чтобы пользователи могли искать продукт с помощью фильтра.Я включил класс Product.php а затем вызовите методы для отображения значений параметров фильтра из таблицы базы данных MySQL.
<div class="products">
<?php
include 'class/Product.php';
$product = new Product();
?>
<div class="container">
<div class="row">
<form class="form-inline" action=action.php" method="POST">
<label>Type:</label>
<select name="Type" id="type" required>
<?php
$type = $product->gettype();
foreach($Type as $typeDetails){
?>
<optgroup label="Type" value="<?php echo $typeDetails["type"]; ?>" > <?php echo $typeDetails["type"]; ?>
<option value="">-- All --</option>
<option value="">-- Motorcycles --</option>
<option value="">-- Mini-Trucks --</option>
<option value="">-- Vans --</option>
<option value="">-- Cars --</option>
</select>
<?php
}
?>
<label>Make:</label>
<select name="Make" id="make" required>
<?php
$make = $product->getmake();
foreach($Make as $makeDetails){
?>
<optgroup label="Make" value="<?php echo $makeDetails["make"]; ?>" > <?php echo $makeDetails["make"]; ?>
<option value="">-- All --</option>
<option value="">-- Suzuki --</option>
<option value="">-- Honda --</option>
<option value="">-- Yamaha --</option>
<option value="">-- Toyota --</option>
<option value="">-- Nissan --</option>
<option value="">-- Mitsubishi --</option>
<option value="">-- Mazda --</option>
</select>
<?php
}
?>
<label>Price:</label>
<select name="Price" id="price" required>
<?php
$price = $product->getprice();
foreach($price as $priceDetails){
?>
<optgroup label="Price" value="<?php echo $priceDetails["price"]; ?>" > <?php echo $priceDetails["price"]; ?>
<option value="">-- All --</option>
<option value="">-- 0-10000 --</option>
<option value="">-- 10000-50000 --</option>
<option value="">-- 50000-500000 --</option>
<option value="">-- >500000 --</option>
</select>
<?php
}
?>
<label> Size:</label>
<select name="Size" id="size" required>
<?php
$size = $product->getsize();
foreach($size as $sizeDetails){
?>
<optgroup label="Size" value="<?php echo $sizeDetails["size"]; ?>" > <?php echo $sizeDetails["size"]; ?>
<option value="">-- All --</option>
<option value="">-- Small --</option>
<option value="">-- Medium --</option>
<option value="">-- Large --</option>
</select>
<?php
}
?>
<label> Color:</label>
<select name="Color" id="color" required>
<?php
$color = $product->getcolor();
foreach($color as $ColorDetails){
?>
<optgroup label="Color" value="<?php echo $colorDetails["color"]; ?>" > <?php echo $colorDetails["color"]; ?>
<option value="">-- All --</option>
<option value="">-- Red --</option>
<option value="">-- Blue --</option>
<option value="">-- White --</option>
<option value="">-- Black --</option>
<option value="">-- Grey --</option>
<option value="">-- Silver --</option>
<option value="">-- Orange --</option>
</select>
<?php
}
?>
<button type="submit" class="filled-button btn-block">Search</button>
</form>
<div class="col md-6">
<div class="row">
<div class="col-md-3">
<div class="product-item">
<a href="Toyota-Allion-Details.html"><img src="images/Toyota allion.jpg" alt="Toyota Allion"></a>
<div class="card-footer">
<div class="card-title"><h3>Toyota Allion</h3></div>
<div class="card-price"><h3>Rs 850 000</h3></div>
<p class="card-text"><small class="text-muted">Available in white only</small></p>
<small>
<strong title="Author"><i class="fa fa-dashboard"></i>53 000km</strong> amp;nbsp;amp;nbsp;amp;nbsp;
<strong title="Author"><i class="fa fa-cube"></i>1600cc</strong>amp;nbsp;amp;nbsp;amp;nbsp;
<strong title="Views"><i class="fa fa-cog"></i>Automatic</strong>
</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="product-item">
<a href="Toyota-Axio-Details.html"><img src="images/Toyota axio.jpg" alt="Toyota Axio"></a>
<div class="card-footer">
<div class="card-title"><h3>Toyota Axio</h3></div>
<div class="card-price"><h3>Rs 750 000</h3></div>
<p class="card-text"><small class="text-muted">Available in white only</small></p>
<small>
<strong title="Author"><i class="fa fa-dashboard"></i>25 453km</strong> amp;nbsp;amp;nbsp;amp;nbsp;
<strong title="Author"><i class="fa fa-cube"></i>1500cc</strong>amp;nbsp;amp;nbsp;amp;nbsp;
<strong title="Views"><i class="fa fa-cog"></i>Automatic</strong>
</small>
</div>
</div>
</div>
<div class="col-md-12">
<ul class="pages">
<li class="active"><a href="productContent1.html">1</a></li>
<li><a href="productContent2.html">2</a></li>
<li><a href="productContent3.html">3</a></li>
<li><a href="productContent2.html" class="fa fa-angle-double-right"></a></li>
</ul>
</div>
</div>
</div>
//в action.phpI включен класс Product.php и вызовите метод $product->searchProducts(), чтобы получить HTML-результат поиска и передать его как ответ JSON с использованием json_encode.
<?php
include 'class/Product.php';
$product = new Product();
if(isset($_POST["action"])){
$html = $product->searchProducts($_POST);
$data = array(
"html" => $html,
);
echo json_encode($data);
}
?>
//Product.php чтобы определить метод searchProducts(), чтобы получить данные поиска фильтра продукта из таблицы базы данных MySQL.Я создал запрос ВЫБОРА с параметрами поиска фильтра и получаю данные. Затем создайте результирующий HTML с данными результата и верните как полный результат поиска HTML.
<?php
function searchProducts(){
$sqlQuery = "SELECT * FROM ".$this->productTable;
if(isset($_POST["type"])) {
$typeFilterData = implode("','", $_POST["type"]);
$sqlQuery .= "
AND type IN('".$typeFilterData."')";
}
if(isset($_POST["make"])){
$makeFilterData = implode("','", $_POST["make"]);
$sqlQuery .= "
AND make IN('".$makeFilterData."')";
}
if(isset($_POST["price"])) {
$priceFilterData = implode("','", $_POST["price"]);
$sqlQuery .= "
AND price IN('".$priceFilterData."')";
}
if(isset($_POST["size"])) {
$sizeFilterData = implode("','", $_POST["size"]);
$sqlQuery .= "
AND size IN('".$sizeFilterData."')";
}
if(isset($_POST["color"])) {
$colorFilterData = implode("','", $_POST["color"]);
$sqlQuery .= "
AND color IN('".$colorFilterData."')";
}
$sqlQuery .= " ORDER By price";
$result = mysqli_query($this->dbConnect, $sqlQuery);
$totalResult = mysqli_num_rows($result);
$searchResultHTML = '';
if($totalResult > 0) {
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
$searchResultHTML .= '';
}
}
else {
$searchResultHTML = '<h3>No product found.</h3>';
}
return $searchResultHTML;
}
?>
//search.js определить функцию filterSearch() для выполнения Ajax-запроса в соответствии с параметром поиска фильтра, отображающим результат поиска. Запрос Ajax, сделанный на action.php чтобы загрузить данные поиска из таблицы базы данных MySQL в виде ответа JSON.
function filterSearch() {
$('.searchResult').html('<div id="loading">Loading .....</div>');
var action = 'fetch_data';
var type = getFilterData('type');
var make = getFilterData('make');
var price = getFilterData('price');
var size = getFilterData('size');
var color = getFilterData('color');
$.ajax({
url:"action.php",
method:"POST",
dataType: "json",
data:{action:action, type:type, make:make, price:price, size:size, color:color},
success:function(data){
$('.searchResult').html(data.html);
}
});
}
Комментарии:
1. Привет, что работает? вы получаете какую-либо ошибку?
2. Предупреждение: включить (class/Product.php ): не удалось открыть поток: нет такого файла или каталога в C:xampphtdocsproductContent1.php в строке 45 Предупреждение: включить (): Неудачное открытие ‘class/Product.php ‘ для включения (include_path=’C:xamppphpPEAR ‘) в C:xampphtdocsproductContent1.php в строке 45 @swati ошибка, которую я получаю… Фатальная ошибка: неперехваченная ошибка: класс ‘Product’ не найден в C:xampphtdocsproductContent1.php:46 Трассировка стека: #0 {main} добавлено C:xampphtdocsproductContent1.php в строке 46
3. Ошибка просто скажите, что класс в пути, который вы указали, не существует или он неправильный.