Показать сообщение отдельно
  #3 (permalink)  
Старый 29.12.2016, 20:10
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

laimas, я даже не знаю как Вас благодарить, Вы вот практически одно слово сказали про WHERE, и сразу все стало на свои места. Вы не первый раз уже мне помогаете, а раз 10-й, и всегда четко, спасибо))

Я кое что добавил:

1) скрипт который определяет параметр из ссылки, разместил в глобальной зоне видимости, и добавил одну переменную:
var key_c = $('[name=comments_key]'),
	url = document.location.pathname,
	page_url = url.split('/')[2];
key_c.val(page_url);


2) Эту переменную передал на сервер, через аякс который загружает записи:
function load_comments(page){
	$.ajax({
		url: '/main_c/loadComments',
		type: 'POST',
		data: {
			page: page || 0,
			limit: comment_limit,
			key_c: page_url,
		},
		dataType: 'json',
	})
	.done(function(result){
		if (result.is_ok){
			create_nav(result.nav);
			create_comments(result.comments, true);
		}
	});
}


3) Принял эту переменную и использовал её в качестве параметра для условия WHERE:
// КОНТРОЛЛЕР
function loadComments() {
		
	$page = isset($_POST['page']) ? (int)$_POST['page'] : 0;
	$limit = isset($_POST['limit']) ? (int)$_POST['limit'] : 3;
	$key_c = $_POST['key_c'];
		
	$answer = new stdClass();
	$err = array();
		
	$answer->nav = new stdClass();
	$answer->nav->page = $page;
	$answer->nav->max = $this->db->count_all('comments');
	if ($page * $limit <= $answer->nav->max){
		$answer->comments = $this->main_model->get_comments_limit($page, $limit, $key_c);
	}
		
	$answer->is_ok = !count($err);
	$answer->err = $err;
		
	echo json_encode($answer);
}

// МОДЕЛЬ
function get_comments_limit($page=0, $limit=3, $key_c){
	$this->db->order_by("id", "desc");
	$query = $this->db->get_where('comments', array('key_c' => $key_c), $limit, $page * $limit);
	return $query->result_array();
}


И все заработало, НО как обычно не обошлось без НО (((
Выборка данных происходит так как мне и нужно, НО "сломалась" пагинация. Она не учитывает то, что теперь у меня выводятся только определенные строки, и показывает количество страниц, ка будто выводятся все записи. То есть - если бы выводились все строки то количество страниц было бы (например) 4, в каждой страничке по 3 записи, а по факту, с учетом того что выводятся только определенные строки, выводить всего (например) 3 записи, этого хватает на одну страничку, а внизу все равно отображается 4 страницы, когда начинаешь их переключать, то они просто пустые.
В целом ситуация понятна, мой алгоритм просто считает количество всех строк в таблице, делит их на 3 (число записей которое выводиться на одну страницу) и создает соответствующее количество страниц. Теперь мне нужно доработать алгоритм таким образом что бы он учитывал что из таблицы выводятся не все записи.

Вот только я пока не имею не малейшего понятия как это сделать.

Я понимаю что это нагло с моей стороны, и Вы конечно же нечего мне не должны)) Но я очень Вас прошу, посмотреть весь мой алгоритм и подсказать как его доработать. Буду невероятно благодарен и обещаю в новогоднюю ночь выпить за Ваше здоровье бутылку шампанского
Ответить с цитированием