Доброго времени суток.
Я начинающий php программист.
Обычно делал на сайте пагинацию, но сейчас решил попробовать сделать кнопку "загрузить еще".
Кнопку поставил и все работало, но когда добавил вывод товаров по категориям, кнопка перестала работать, понимаю, что нужно в обработчик передать id категории, но где и как это сделать не понимаю. Использую структуру MVC.
Подскажите пожалуйста. Заранее спасибо!)
//controllers
$ids = cats_id($arrayOffers, $id);
//models
/* Получение ID дочерних категорий */
function cats_id($array, $id){
if(!$id) return false;
foreach($array as $item){
if($item['parent'] == $id){
$data .= $item['id'] . ",";
$data .= cats_id($array, $item['id']);
}
}
return $data;
}
/* Получение товаров */
function getOffers($ids = false){
global $connection;
if($ids){
$query = "SELECT * FROM offers WHERE parent IN($ids) ORDER BY title LIMIT 1";
}else{
$query = "SELECT * FROM offers ORDER BY title LIMIT 1";
}
$res = mysqli_query($connection, $query);
$offers = array();
while($row = mysqli_fetch_assoc($res)){
$offers[] = $row;
}
return $offers;
}
<div class="main_content">
<div id="content">
<?php if($offers): ?>
<?php foreach($offers as $offer): ?>
<div>
<a href="?offer=<?=$offer['id']?>"><?=$offer['title']?></a>
<p><?=$offer['short_content'];?></p>
<a href="?offer=<?=$offer['id']?>">Прочитать подробнее</a>
</div>
<?php endforeach; ?>
<?php else: ?>
<p>Здесь нет товаров!</p>
<?php endif; ?>
</div>
<input id="show_more" count_show="2" count_add="1" type="button" value="Показать еще" />
</div>
//ajax
include "config.php";
$countView = (int)$_POST['count_add']; // количество записей, получаемых за один раз
$startIndex = (int)$_POST['count_show']; // с какой записи начать выборку
global $connection;
$query = "SELECT * FROM offers WHERE parent IN($ids) ORDER BY title LIMIT $startIndex, $countView";
$res = mysqli_query($connection, $query);
$offers = array();
while($row = mysqli_fetch_assoc($res)){
$offers[] = $row;
}
if(empty($offers)){
// если товаров нет
echo json_encode(array(
'result' => 'finish'
));
}else{
// если товары есть
$html = "";
foreach($offers as $oneNews){
$html .= "
<div>
<b>{$oneNews['title']}</b>
<p>{$oneNews['short_content']}</p>
</div>
";
}
echo json_encode(array(
'result' => 'success',
'html' => $html
));
}
$('#show_more').click(function(){
var btn_more = $(this);
var count_show = parseInt($(this).attr('count_show'));
var count_add = $(this).attr('count_add');
btn_more.val('Подождите...');
$.ajax({
url: "ajax_more.php", // куда отправляем
type: "post", // метод передачи
dataType: "json", // тип передачи данных
data: { // что отправляем
"count_show": count_show,
"count_add": count_add
},
// после получения ответа сервера
success: function(data){
if(data.result == "success"){
$('#content').append(data.html);
btn_more.val('Показать еще');
btn_more.attr('count_show', (count_show+3));
}else{
btn_more.val('Больше нечего показывать');
}
}
});
});