Разбитие вывода из БД на части

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Друзья. Подскажите самый разумный способ разбития вывода информации на части, вида:

КОнтент
КОнтент
КОнтент
КОнтент
КОнтент
кнопка "показать ранние записи" (по нажатию открываются ещё записи)
откр. запись
откр. запись
откр. запись
откр. запись
откр. запись
кнопка, по нажатию открываются ещё записи..

Заранее большое спасибо.
 
да, асинхронный запрос к бд.
читай про json, ajax (jquery.post/jquery.ajax)
 
Это не PHP, это JS/AJAX :)
Вот здесь пример без AJAX можно посмотреть, справа колонка новостей с плюсом и минусом.
 
на сервере с php это выборка данных от и до, запрос в базу с limit x,x и т.д.
Например генерируется цикл от и до, скрипт получает данные через get

load_more.php
PHP:
<?
header('Content-Type: text/plain; charset=utf-8');
$from = intval($_GET['from']);
$limit = intval($_GET['limit']);

if($from+$limit>15){
    echo "Больше нету.";
    exit();
}

for($i=$from; $i<$from+$limit; $i++){
    echo $i."<br />";
}
?>
Тогда на странице надо только ссылку на php файл генерировать и загружать данные из php файла с ajax, пример с jquery
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script language="JavaScript" type="text/javascript">

//глобальные переменные для запроса от и сколько
var from = 0;
var limit = 5;
$(document).ready(function(){
                           
    //функция загрузки
    function loader(){
        $.ajax({
          //ссылка на данные
          url: 'load_more.php?from='+encodeURIComponent(from)+'&limit='+encodeURIComponent(limit),
          cache: false,
          //после получения данных
          success: function(data){
              //в элемент с id=text добавить полученные данные
              $("#text").append(data);
              $("#text").append('закачано '+limit+' от '+from+'<br />');
              if(data!="Больше нету."){
                  //для следующих данных увеличить счётчик от
                  from += limit;
              }else{
                  //убрать элемент id=more уже нет данных и не нужен
                  $("#more").hide();
              }
          }
        });
    }
    
    //обработка кликов на элемент id=more
    $("#more").click(function(){
        loader();
        //запретить переход по ссылке после клика
        return false;
    });
    
    //загружаем первые данные
    loader();
});

</script>


<title>Загрузка с JQuery</title>
</head>

<body>

<div id="text"></div>
<a id="more" href="#">ещё</a>

</body>
</html>
 
еще лучше все сжимать каким-нибудь Minify, или HTTP_StaticMerger. Можно считывать указатель скролла, чтобы понять, когда надо подгружать (как это делает ВК)

P.S. Вы хоть раз думали, когда писали JS/AJAX ?
JS = javascript
AJAX = Asynchronous Javascript and XML

какбы AJAX подразумевает использование Javascript.
 
Назад
Сверху