@sardor93
айти это моё всё

Как контролировать цикл «for» в php с помощью javascripta?

Всем доброго дня!
Есть php файл который генерирует страницу. Контент данной страницы берется из матрицы(array) и с помощью цикла "for" выводится по одному. Проблема в том что, если в arraye много значений то страница долго грузится и иногда даже не открывается.
  • Вопрос задан
  • 328 просмотров
Пригласить эксперта
Ответы на вопрос 5
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
У Вас не с js плохо, у Вас плохо с пониманием как все в целом работает.
Начать с чтения phpfaq.ru/na_tanke

Что касается вопроса: необходимо при изначальном запросе страницы отдавать не все данные, а только часть.
При дальнейших запросах через ajax, передавать в PHP скрипт параметры сколько данных и из какого места нужно.
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Никак. PHP выполняется на стороне сервера, JS на стороне клиента когда PHP скрпит уже отработал и вы видите результат его работы.

Учите матчасть.
Ответ написан
abler98
@abler98
Software Engineer
Серверная часть (наброски):
<?php

header('Content-type: text/html');

$page = (int) $_GET['page'];
$page_size = 10; // Элементов на странце
$count = 95; // Количество записие, скорее всего это будет COUNT записей в таблице
$pages = floor($count / $page_size); // Всего страниц
$start = $page * $page_size - $page_size;

if ($page < 1) $page = 1;
if ($page > $pages) $page = $pages;

# Получаем необходимые записи (запрос), результат и сам сможешь получить
$query = 'SELECT `author` FROM `records` ORDER BY `id DESC LIMIT ' . $start . ', ' . $page_size;
$records = []; // Массив записей, получай как хочешь :)

# Вывод записей
foreach ($records as $record) {
	echo '<p>Автор: ' . $record['author'] . '</p>';
}

Клиентская часть:
$(document).ready(function () {
	var page = 1;
	
	$('#more').on('click', function (event) {
		var records = $('#records');
		page++;
	
		$.ajax({
			url: "server.php",
			type: "GET",
			data: "page=" + page,
			dataType: "html",
			success: function (html) {
				records.append(html);
			}
		});
		
		event.preventDefault();
	});
});

<div id="records"></div>
<div id="more" style="cursor: pointer">Загрузить ещё</div>

Типа такого, но это просто пример, лучше воспользуйтесь гуглом
Ответ написан
Комментировать
aliencash
@aliencash
Партизан
Почему вы хотите именно правой ногой почесать левое ухо. У вас есть мощный инструмент - php, поправьте скрипт так, чтоб он выводил информацию по 10 на страницу. А внизу вставьте ссылки - дальше-назад.
Ответ написан
@ukoHka
Всего понемногу
Скрипту через get можно передавать параметр results
example.com/index.php?show=news&results=5
for ($i=0;$i<$_GET['results'];$i++) {
loadresult($i);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы