Главная » PHP » Динамическая загрузка элементов из базы данных
Динамическая загрузка элементов из базы данных
Я пытаюсь создать блог, который отображает комментарии, хранящиеся в базе данных: однако я хотел бы, чтобы комментарии появлялись, когда пользователь прокручивал страницу вниз, динамически создавая ее на странице, а не имея ссылки на следующий набор комментариев.
На данный момент я использую MySQL с php для отображения сохраненных комментариев.
$query = "SELECT * FROM comment ORDER BY time DESC";
$result = mysql_query($query);
while($data = mysql_fetch_assoc($result)){
echo "<comment><div class='comment-bubble'><p>" . $data['comment'] . "</p></div>";
//other div structure & data here
}
Я знаю, что есть плагины, такие как jscroll. Но это извлекает данные из других файлов HTML, а не из базы данных.
Я знаю, что метод может нуждаться в изменении, так как php загружает данные до того, как страница … так, что будет лучшим способом для этого?
Лучшим решением было бы вам ограничить комбинацию в запросе MySQL.
пример
`SELECT * FROM comment ORDER BY time DESC LIMIT 0,10; # Retrieve rows 1-10`
и впоследствии вы можете попробовать использовать
`SELECT * FROM comment ORDER BY time DESC LIMIT 10,10; # Retrieve rows 11-20`
и так далее, чтобы получать 10 комментариев за раз при каждой прокрутке.
1
Другие решения
Просто загрузите все свои данные и скройте вторые данные до последних. Используйте приемы jquery, такие как scrollTop (), чтобы обнаружить прокрутку и fadeIn () ваш div шаг за шагом, если значение пользовательской прокрутки совпадает с возвращаемым значением scrollTop () во время прокрутки мышью.
1
Итак, из-за большого количества исследований, которые я вложил в это: на самом деле невозможно динамически обновляться через mySQL без предварительной загрузки всех комментариев. Это связано с тем, что PhP загружается до того, как страница отобразит его, поэтому JavaScript не может динамически представлять больше комментариев. если страница обновлена.
Я собираюсь побаловать AJAX, так как он создан для динамически меняющихся сайтов. Надеюсь, скоро выложу свой полный ответ на проблему.
РЕДАКТИРОВАТЬ: Используя JQuery AJAX я придумал это:
//Load more comments when reaching the end of the page
var isPreviousEventComplete = true, isDataAvailable = true;
$(window).scroll(function () {
if ($(document).height() - 50 <= $(window).scrollTop() + $(window).height()) {
if (isPreviousEventComplete && isDataAvailable) {
isPreviousEventComplete = false;
$(".LoaderImage").css("display", "block");
$.ajax({
type: "POST",
url: 'ajax/query.php',
data: "from=" + counter,
success: function (html) {
$("#comments").append(html);
counter++;
isPreviousEventComplete = true;
if (html == '') isDataAvailable = false;
$(".LoaderImage").css("display", "none");
},
error: function (error) {
alert("error " + error);
}
});
}
}
});
Работает как шарм. Благодаря Хендри Танака для направления меня в правильном направлении.
Я пытаюсь создать блог, который отображает комментарии, хранящиеся в базе данных: однако я хотел бы, чтобы комментарии появлялись, когда пользователь прокручивал страницу вниз, динамически создавая ее на странице, а не имея ссылки на следующий набор комментариев.
На данный момент я использую MySQL с php для отображения сохраненных комментариев.
Я знаю, что есть плагины, такие как jscroll. Но это извлекает данные из других файлов HTML, а не из базы данных.
Я знаю, что метод может нуждаться в изменении, так как php загружает данные до того, как страница … так, что будет лучшим способом для этого?
Спасибо, парни!
Решение
Лучшим решением было бы вам ограничить комбинацию в запросе MySQL.
пример
и впоследствии вы можете попробовать использовать
и так далее, чтобы получать 10 комментариев за раз при каждой прокрутке.
Другие решения
Просто загрузите все свои данные и скройте вторые данные до последних. Используйте приемы jquery, такие как scrollTop (), чтобы обнаружить прокрутку и fadeIn () ваш div шаг за шагом, если значение пользовательской прокрутки совпадает с возвращаемым значением scrollTop () во время прокрутки мышью.
Итак, из-за большого количества исследований, которые я вложил в это: на самом деле невозможно динамически обновляться через mySQL без предварительной загрузки всех комментариев. Это связано с тем, что PhP загружается до того, как страница отобразит его, поэтому JavaScript не может динамически представлять больше комментариев. если страница обновлена.
Я собираюсь побаловать AJAX, так как он создан для динамически меняющихся сайтов. Надеюсь, скоро выложу свой полный ответ на проблему.
РЕДАКТИРОВАТЬ: Используя JQuery AJAX я придумал это:
Работает как шарм. Благодаря Хендри Танака для направления меня в правильном направлении.