2015-06-15 4 views
0

Я создаю страницу для получения изображений из db при прокрутке, но моя проблема заключается в том, что вы просматриваете следующий веб-сайт и получаете изображения из db, когда кто-то добавляет новое изображение в db , последующие изображения будут отображаться снова.Ajax из базы данных

Как это предотвратить?

HTML:

<div class="row"> 

    <div class="col-sm-6 rowL"> 

    </div> 

    <div class="col-sm-6 rowR">    

    </div> 

</div> 

JS:

$(function() 
{ 
    var load = 0; 
    $(window).scroll(function(){ 

     var win = $(window).height(); 
     var doc = $(document).height(); 
     var top = $(window).scrollTop(); 
     var loadat = doc - win; 
     loadat = loadat - 200; 

     if(top >= loadat) 
     { 
      load++; 
      $.post('ajax.php', {load: load}, function(data) 
      {        
       var str = data; 
       var res = str.split("split"); 

       //alert(res); 

       $(".rowL").append(res[0],res[1],res[2],res[3],res[4]); 
       $(".rowR").append(res[5],res[6],res[7],res[8],res[9]); 
      }); 

     } 
    }); 
}); 

PHP:

<?PHP 
    include 'core/init.php'; 

    $db = DB::getInstance(); 
    $img = $db->Get('img'); 


    $load = $_POST['load']; 

    $dane = $db->scroll($load); 


    foreach($dane as $key=>$value) 
    { 
     ?> 
     <a href="" class="thumbnail"> 
      <img src="<?PHP echo $value->src; ?>" alt="img"/> 
     </a>split 
     <?PHP 
    } 
?> 

public function scroll($load) 
{ 
    $load *= 10; 
    $result = $this->_pdo->query("SELECT * FROM img ORDER BY id DESC LIMIT $load,10"); 
    return $result->fetchAll(PDO::FETCH_OBJ); 
} 
+0

У вас есть поле «id» (например, auto-incremented) в вашей таблице? –

+0

да у меня есть автоинкрементный – Browar

+0

Итак, можете ли вы заказать свой результат по этому полю, опуститься и использовать этот номер для построения вашего запроса? –

ответ

0

Это следовало ожидать. например у вас есть следующие идентификаторы изображений, возвращаемые из вашего запроса.

42, 39, 37, 5, 4 

Допустим, ваш пагинация идет 2 изображения, так

42, 39,  37, 5,  4 
    ^^^^^^  ^^^^^  ^
    page 1  page 2  page 3 

Когда новое изображение (ID # 50, скажем) добавляется, оно будет отображаться на на передней панели результатов запроса :

50, 42, 39, 37, 5, 4 

так что теперь ваши страницы выключены:

50, 42,  39, 37,  5, 4 
page 1  page 2  page 3 

Существует не так много, чтобы исправить это, так как вы просматриваете свои страницы в «последних последних» заказах. Добавление нового изображения, естественно, сделает новое изображение последним, а все остальные изображения будут удалены на одно место.

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

например.

loading page 1 -> highest image = 42 
loading page 2 -> add "where id <=42" to the query 
+0

Я понимаю, но пытаюсь сделать это на одной странице, без разбивки на страницы – Browar

Смежные вопросы