2014-04-01 21 views
2

我下面的PHP MVC結構,我已經從github下載這對我很有幫助。問題與加載更多結果在php ajax

現在我已經實現了用於延遲加載的Ajax功能,以便在用戶單擊時加載更多的帖子(加載更多)。

我已經實現了這個結構,它工作完美,但我得到一個小問題。問題是當沒有記錄可它仍然顯示我加載更多內容,然後顯示沒有更多內容加載

我試圖解決這個問題,但我不能得到解決,這就是爲什麼我來到這裏。

我的代碼工作:

的index.php

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $('.more_button').live("click", function() { 
     var getId = $(this).attr("id"); 
     if (getId) { 
      $("#load_more_" + getId).html('<img src="<?php echo URL; ?>public/img/load_img.gif" style="padding:10px 0 0 100px;"/>'); 
      $.ajax({ 
       type: "POST", 
       url: "<?php echo URL; ?>home/loadSong", 
       data: "getLastContentId=" + getId, 
       cache: false, 
       success: function (html) { 
        $("ul#load_more_ctnt").append(html); 
        $("#load_more_" + getId).remove(); 
       } 
      }); 
     } else { 
      $(".more_tab").html("<div class='all_loaded'>No More Content to Load</div>"); 
     } 
     return false; 
    }); 
}); 
</script> 

<div class='main_div'> 
    <ul class="load_content" id="load_more_ctnt"> 
     <?php foreach ($songs as $song) { $id = $song->id; ?> 
      <li> <a href="#"><?php if (isset($song->artist)) echo $song->artist; ?></a> </li> 
     <?php } ?> 
    </ul> 
    <div class="more_div"> 
     <a href="#"> 
      <div id="load_more_<?php echo $id; ?>" class="more_tab"> 
       <div class="more_button" id="<?php echo $id; ?>">Load More Content</div> 
      </div> 
     </a> 
    </div> 
</div> 

home.php(控制器)

public function loadSong() { 

     if(isset($_POST['getLastContentId'])) { 
      // load model, perform an action on the model 
      $getLastContentId=$_POST['getLastContentId']; 
      $songs_model = $this->loadModel('HomeModel'); 
      $songs_model->loadmoreSong($getLastContentId); 
     } 
    } 

homemodel.php(模型)

public function loadmoreSong($getLastContentId) {  

     if(isset($_POST['getLastContentId'])) { 

      $getLastContentId=$_POST['getLastContentId']; 

      $sql = "select id, artist, track, link from song WHERE id <".$getLastContentId." ORDER BY id DESC LIMIT 10"; 
      $query = $this->db->prepare($sql); 
      $query->execute(); 
      $count = $query->fetchAll(); 

      if($count>0) { 
       $id = ""; 
       for($i=0; $i<count($count); $i++){ 
        $id = $count[$i]->id; 
        $message = $count[$i]->artist; 
       ?> 

        <li> 
         <a href="#"><?php echo $message; ?></a> 
        </li> 

       <?php 
        } 
       ?> 

       <a href="#"> 
        <div id="load_more_<?php echo $id; ?>" class="more_tab"> 
         <div id="<?php echo $id; ?>" class="more_button">Load More Content</div> 
        </div> 
       </a> 

      <?php 
       } 
      } 
    } 

我的現場演示環節:Load More Demo

我希望你明白我的問題。需要你的幫助來解決這個問題。

謝謝。

+0

您將需要閱讀結果總數以及顯示或不顯示.more_div部分。 – va5ja

+0

請在模型中提供else語句。 –

回答

2

只要編輯這段代碼:

<a href="#"> 
<div id="load_more_<?php echo $id; ?>" class="more_tab"> 
<div id="<?php echo $id; ?>" class="more_button">Load More Content</div> 
</div> 
</a> 

要這樣:

<?php  
if($id!=""){ 
?> 
<a href="#"> 
<div id="load_more_<?php echo $id; ?>" class="more_tab"> 
<div id="<?php echo $id; ?>" class="more_button">Load More Content</div> 
</div> 
</a> 
<?php 
} 
?> 
+1

非常感謝你的幫助:) – Manan

0

添加SQL_CALC_FOUND_ROWS到你的SELECT查詢,如:

select SQL_CALC_FOUND_ROWS id, artist, tra.... 

然後檢查發現行與:

SELECT FOUND_ROWS() 

將結果存儲在var $ found_rows

然後,在homemodel.php結束時,您將有:

if ($count < $found_rows) { 
    ?> 
      <a href="#"> 
       <div id="load_more_<?php echo $id; ?>" class="more_tab"> 
        <div id="<?php echo $id; ?>" class="more_button">Load More Content</div> 
       </div> 
      </a> 
    <?php 
} else { 
    ?> 
      <a href="#"> 
       <div id="load_more_<?php echo $id; ?>" class="more_tab"> 
        <div class='all_loaded'>No More Content to Load</div> 
       </div> 
      </a> 
    <?php 
} 
0

變化:

if($count > 0) 

到:

if($count) 
+0

這不會改變什麼,除了額外的內部鑄造到布爾。 – blue

+0

其實是的,它確實改變了一切,因爲當你檢查數組是否大於標量時,它總會返回true –

+0

不錯的一個發現它。你告訴他 :) – blue