2012-07-28 106 views
0

我試圖在沒有手動刷新網頁的情況下從特定DIV中的mysql服務器自動檢索數據。Ajax,PHP,MySQL檢索數據

我的PHP代碼:

function lastCodes(){ 
    include('mysql.php'); 
    include('config.php'); 

echo "<div id='content_data'>"; 

    $get = mysql_query("SELECT * FROM scripts ORDER by date_added DESC"); 
    if(mysql_num_rows($get)>0){ 
     while($row = mysql_fetch_assoc($get)){ 

      $get2 = mysql_query("SELECT * FROM accounts WHERE username = '$row[s_owner]'"); 
       while($red = mysql_fetch_assoc($get2)){ 

      echo "<table> 
         <tr> 
           <td width='22px'>"; 
         if(!empty($red['avatar'])){ 
          echo "<center> 
             <img src='$red[avatar]' style='width: 52px; height: 52px; margin-left: -30px; border: 2px solid #fff;' title='$row[s_owner]'/> 
            </center> 
           </td>"; 
         } else { 
          echo "<td width='22px'> 
             <center> 
              <img src='/theme/$tema/icons/empty_avatar.png' style='width: 52px; height: 52px;' title='$row[s_owner]'/> 
             </center> 
            </td>"; 
         }  

      echo "<td> 
         <a style='font-family: IndexName; color: #000; font-size: 14px; margin-left: 5px;'><b>$row[s_owner]</b> написа <a title='$row[s_name], Категория: $row[s_category].' href='#' style='text-decoration: none;'>нов код</a> <a style='font-family: IndexName; color: #000; font-size: 14px; margin-right: 10px;'>в $row[date_added]</a> 
        </td> 
        </tr> 
        </table>"; 

     } 

     } 

    } 

echo "</div>"; 

} 

應該是什麼在我的情況了jQuery/Ajax代碼,如果我想檢索這些信息在DIV稱爲「content_data」在5秒的間隔?非常感謝!

+6

谷歌「ajax教程」。如果你想使用jQuery來讓它更容易,谷歌「jQuery教程」。 – 2012-07-28 23:41:23

回答

1

您可以將lastCodes()函數的內容放入一個空的PHP文件中,我們將其稱爲lastCodes.php。

然後用負載的功能從JQuery的頁面上,你要檢索的數據

<div id="divTarget"></div> 
<script type="text/javascript"> 
    $("#divTarget").load("lastCodes.php"); 
</script> 

但是請記住,編碼會導致混亂真正快速的這種方式。我建議你嘗試任何可用的大型模板系統。對於乾淨的代碼沒有必要,但沒有一個你需要一些紀律保持你的視圖代碼的邏輯。

當你對其中的一個感覺很舒服時,你可以進一步去嘗試前端使用Javascript的模板系統,例如Handlebars。使用其中的一個,您將能夠編寫乾淨的代碼並使用JSON發送數據,這將降低HTTP響應的大小,同時使數據更適用於其他場景,而不僅僅是將其呈現爲HTML。

編輯:要更新每5秒的數據:

<script type="text/javascript"> 
    window.setInterval(function() {  
    $("#divTarget").load("lastCodes.php"); 
    }, 5000); 
</script> 
+0

好的,但它加載一次,5秒後不重新加載,並且不刷新新數據。 – Khanasyubighi 2012-07-29 00:26:38

+0

嘗試此: <腳本類型= 「文本/ JavaScript的」> window.setInterval(函數(){ $( 「#divTarget」)負載( 「lastCodes.php」); 。},5000); – 2012-07-29 00:34:53

+0

謝謝,夥計們,我得到它的工作,現在我明白了代碼! – Khanasyubighi 2012-07-29 09:42:14

0

你只需要使用setInterval()函數加載頁面的內容,每5秒(5000毫秒)

</div> 

<script src="jquery.js"></script> 
<script> 
setInterval(function(){ 
    $('#container').load('page.php'); 
}, 5000); 
</script> 

我可以看到你有一個功能,所以你不妨稱它。如果這不起作用,那麼嘗試將代碼放在函數之外。

lastCodes(); 

確保其真正改變它的內容和你的確調用頁面的作品,你可以通過訪問網頁本身的測試,看看它是否有任何輸出。