Задать вопрос
@artem_vertus

Как реализовать кнопку «загрузить еще» для выбранной категории товаров?

Доброго времени суток.

Я начинающий 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('Больше нечего показывать');
				}
            }
        });
    });
  • Вопрос задан
  • 391 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы