2015-06-16 6 views
0

Я продолжаю мою гостевую книгу, и мне было интересно, есть ли способ обновить таблицу при появлении нового сообщения.Обновить таблицу Гостевая книга

все сообщения сохраняются в базе данных и отображаются в виде HTML-таблицы:

echo "<table class=\"guestbook\" cellspacing='10'>"; 

     while($rows=mysql_fetch_array($result)) { 
      $avatar = $Database->selectAvatar($rows['name']); 
      $rowsAvatar=mysql_fetch_array($avatar) 

      ?> 
     <tr> 
      <td class="avatar" width="10%"><img class="circolare" src="<?php echo $rowsAvatar['avatar'] ?>"></td> 
      <td class="name" width="10%"><?php echo $rows['name']; ?></td> 
      <td class="datetime" width="20%"><?php echo $rows['datetime']; ?></td> 
      <td class="comment" width="50%"><div class="scrollbar"><?php echo $rows['comment']; ?></div></td> 
      <td class="delete" width="10%"><?php 
       if($rows['name']== $name){ 
        echo "<a href=\"deletecomment.php?comment_id=" . $rows['id'] ."\">Delete it</a>"; 
       } 
       ?> 
      </td> 
     </tr> 


     <?php 
     } 
     echo "</table >"; 
     ?> 

Я хочу, чтобы автоматически обновлять эту таблицу, как я могу сделать? Во-первых, я попытался использовать автоматическое обновление каждые 5 секунд, но есть проблема, что если пользователь пишет сообщение (форма, находящаяся на той же странице) и обновление страницы, он будет потерян. Я думаю, что мне нужно использовать ajax, я прав? Любое предложение?

Я пытаюсь реализовать его с помощью AJAX, и я написал эту

window.onload = function(){ 
    interval = window.setInterval('updateGuest()',5000); 
} 



function updateGuest() { 
    $.ajax({ 
     url: 'getGuest.php', 
     method: 'get', 
     success: on_getGuest_success, 
     error: on_error 
    }); 
} 

function on_getGuest_success(data) { 
    for(var i=0; i<data.length;i++) { 
     //do something 
    } 

} 

function on_error() { 
    //do something 

} 

getGuest.php

<?php 

include("Database.php"); 

$Database = new Database("localhost", "root", "1234"); 
$Database->connectToServer(); 
$Database->connectToDatabase("test"); 

$result = $Database->selectQuery("guestbook", "*"); 

$rows=mysql_fetch_array($result); 

echo json_encode($rows); 
?> 

Я включил все скрипты в home.php (где гостевая книга)

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <script src="jquery-1.11.3.js" type="text/javascript"></script> 
    <script src="Script.js" type="text/javascript"></script> 
</head> 
+0

'похоже, что это не работает, почему?' Что нет? Вы получаете сообщение об ошибке? – Peter

+0

@Peter извините, была глупая ошибка, например datalength, а не data.length ecc .. Как я могу создать таблицу для просмотра в Home.php? – untruste

ответ

0

Вы можете использовать JQuery, чтобы проверить каждые несколько секунд, если есть новый пост (с помощью get или ajax).

Если есть новое сообщение, вы можете append это к столу. Таким образом, страница не должна обновляться, и человек, пишущий сообщение, может продолжить.

Если вы не знакомы с указанными методами, я рекомендую вам посмотреть их и попытаться их реализовать, поскольку они часто используются.

+0

Я не понимаю, почему это было приостановлено? Выглядит вполне законно. –

+0

Я не знаю, я изучил что-то о ajax, но когда я его использовал (для университета), это было с Java. Я обновил первый пост, начал писать что-то с ajax, проверьте его! – untruste

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