2012-02-21 54 views
0

下一個未成年人的ID,這是js腳本調用AJAX如何選擇MySQL的

var tempScrollTop, currentScrollTop = 0; 
$(document).scroll(function(){ 

currentScrollTop = $(document).scrollTop(); 

var ids = new Array(); 

if (tempScrollTop < currentScrollTop) 
{ 
    var result = currentScrollTop % 100; 
    if(result == 0 || (result > 20 && result < 30)) 
    { 
     var items = $(".item"); 
     var items_l = items.length; 
     for(var i = 0; i < items_l; i++) 
     { 
      ids[i] = parseInt(items[i].id.replace(/\D+/g,"")); 

     } 
     ids = ids.sort(); 

     var last_id = ids[0]; 
     $.ajax({ 
      url: "ajax/load", 
      type: "POST", 
      data: {last_id : last_id}, 
      success: function(res){ 

      $("#content").append(res); 

      } 
     }); 
    } 
} 

,這是控制器方法

public function ajaxLoad() 
{ 
    $last_id = intval($this->input->post("last_id")); 
    //$last_id++; 
    $db_data['query'] = $this->db->query("SELECT * FROM items WHERE id < ".$last_id." LIMIT 1"); 
    $data['content'] = $this->load->view('item', $db_data, true); 
    echo $data['content']; 
} 

這樣的目的是,我想要得到的在mysql中的id是次要的,即頁面當前的次要id,例如,如果頁面中的次要id是25,我想選擇下一個N記錄,但是如果我寫入全部來自其中id爲< current_id的項目數據庫每次選擇第一行,因爲它是所有數據庫中最小的,但我需要NEXT未成年人,如何做到這一點?

我的意思是20比25的下一個未成年人,但我不希望選擇15,我得到20

之前讓假設我們有這樣的ID在DB:14,26,30,40 ..

因此,頁面中的未成年人是30,我想選擇下一個小ID,它將是26,然後14,這可能做到這一點嗎?

回答

1

試試這個:

$db_data['query'] = $this->db->query("SELECT * FROM items WHERE id < ".$last_id." ORDER BY id DESC LIMIT 1"); 
+0

哇,謝謝我甚至沒有想過,是的,它的工作:)))) – 2012-02-21 19:10:12

+0

@yeahitsme很高興聽到它。如果它解決了您的問題,請不要忘記接受這個答案。 – 2012-02-21 19:10:55

+0

我需要15的聲譽投票,抱歉:(( – 2012-02-21 19:23:54

0

它看起來像你只需要一個order by

SELECT * FROM items WHERE id < $last_id ORDER BY id DESC LIMIT 1 

(我最初讀這錯了,還以爲你在尋找更高的數字)。

+0

mysql_real_escape_string將沒有必要在這裏 - 哦,對了。 – Basti 2012-02-21 19:07:49

+0

@Basti – 2012-02-21 19:08:22

+0

噢,但是是來自ajax的郵件輸入,它如何被黑客攻擊?o_O,謝謝是的,它的工作,謝謝謝謝!!! – 2012-02-21 19:11:11