Возможно ли обновить содержимое divs только при добавлении нового содержимого в базу данных?
Я использую это для «недавних сообщений», которые появляются в боковом меню.
В настоящий момент div устанавливается обновление каждые 10 секунд.
Можно ли как-то проверить, что новая запись была добавлена в db, а затем добавить только данные сообщений в div?
Я использую MySql, php и jquery, чтобы сделать все это.
ДА, ЭТО ВОЗМОЖНО
В приведенном ниже коде будут добавлены последние фотографии:
Это можно использовать для создания живого блога, например, когда пользователь увидит все последние комментарии, изображения или сообщения или все, даже если он не перезагрузит текущую страницу. И он не будет потреблять большую полосу пропускания, поскольку содержимое будет перезагружено ТОЛЬКО, ЕСЛИ НЕТ НОВОГО ДОБАВЛЕНИЯ (в противном случае он отправит крошечную проверку в базе данных).
Я только что закончил разработку решения для этого, и я должен поделиться им с вами. Я делал это для WordPress, мне нужна функция, которая получает фотографии, которые были добавлены ТОЛЬКО после того, как пользователь загрузил страницу. Это можно сделать, просто обновив div каждые 5 секунд, но представьте, есть ли 20 фотографий, и их нужно обновлять каждые 5 секунд … это много МБ данных. Поэтому мы обновим их ТОЛЬКО при добавлении новой фотографии (вы можете применить ее ко всему, от сообщений до комментариев или пользователей и т. Д.).
Существует 3 файла PHP: timer.php , check.php и display.php .
Таймер.php будет загружать check.php каждые 5 секунд, чтобы проверить, добавлен ли новый контент. Обратите внимание на извлечение -6 с момента текущей загрузки check.php.
Дата-дата timer.php будет передана ( check.php? Tim = ** дата печати) через check.php (по ** display.php? Timm = '. $ Tizz.' ) И к display.php, поэтому мы можем использовать его для справки в нашей базе данных (это будет время, откуда мы загрузим все изображения, если будут добавлены новые изображения).
Если есть вопросы, просто спросите. Он тоже должен работать для вас, поскольку он работает для меня.
НАСЛАЖДАТЬСЯ! 🙂
Ниже приведены 3 файла PHP, просто настройте их для своих нужд:
TIMER.PHP (или ваши страницы блога WordPress):
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ setInterval(function(){ $("#quotex a").load("check.php?tim=<?php print date("Ymd H:i:s"); ?>"); }, 5000); }); </script> <div id="quote"><a></a></div> <div id="quotex"><a></a></div>
CHECK.PHP:
<?php // Connects to your Database mysql_connect("localhost", "username", "password") or die(mysql_error()); mysql_select_db("database name") or die(mysql_error()); // SQL query $strSQL = "SELECT * FROM wp_posts WHERE post_mime_type LIKE 'image/jpeg' ORDER BY `wp_posts`.`id` DESC LIMIT 1"; // Execute the query (the recordset $rs contains the result) $rs = mysql_query($strSQL); // Loop the recordset $rs // Each row will be made into an array ($row) using mysql_fetch_array while($row = mysql_fetch_array($rs)) { $atime = $row['post_date']; $tizz = $_GET['tim']; $dsff = $row['post_date'];; $duff = date("Ymd H:i:s"); //convert the date-time into seconds so we can extract 6 seconds from it $six = strtotime(date("Ymd H:i:s"))-6; //convert the latest image date-time too from database so we can compare it $sox = strtotime("$dsff"); if ($six < $sox) { echo '<script type="text/javascript">$(document).ready( function(){ $("#quote a").load("display.php?timm='. $tizz .'"); } ); </script>'; } } // Close the database connection mysql_close(); ?>
DISPLAY.PHP :
<?php $tipp = $_GET["timm"]; // Connects to your Database mysql_connect("localhost", "username", "password") or die(mysql_error()); mysql_select_db("database name") or die(mysql_error()); // SQL query $strSQL = "SELECT * FROM wp_posts WHERE post_mime_type LIKE 'image/jpeg' AND post_date > '$tipp' ORDER BY `wp_posts`.`id` DESC LIMIT 10"; // Execute the query (the recordset $rs contains the result) $rs = mysql_query($strSQL); // Loop the recordset $rs // Each row will be made into an array ($row) using mysql_fetch_array while($row = mysql_fetch_array($rs)) { //guid is the column where the image url is located in the wordpress database table $atime = $row['guid']; echo "<img src='". $atime ."' /><br />"; } // Close the database connection mysql_close(); ?>
Да, вы можете сделать это, сравнив текстовое содержимое.
function updateHtmlContent() { var htmlContent=$('#divToUpdate').text(); $.ajax({ type: "GET", datatype: "text", //php function that should give you the text back url: 'dataBaseFunction.php', success: function(data) { if (htmlContent != data) { $('#divToUpdate').text(data); } } }); } //compare and upate every 20 seconds setInterval(updateHtmlContent(), 20000);
Надеюсь, эта помощь!
Да, возможно, но вам нужно создать метод в php
и использовать Ajax
для обновления вашего div
.
Если вы обновите свой вопрос кодом, я могу привести пример.
Я думаю, что вы, вероятно, около 90% пути. Я предполагаю, что вы используете jQuery для AJAX в контенте каждые 10 секунд (PS Это похоже на много?)
Я думаю, вы могли бы решить свою проблему, запустив функцию backside с сообщениями после самого последнего найденного.
Поэтому, если ваш запрос выглядит так:
SELECT a,b,c FROM foo
Вы должны изменить его на
SELECT a,b,c FROM foo WHERE id > $last_found_id
Вы можете сохранить last_found_id
в своем Javascript и отправить его обратно при вызове функции. Если ваш результирующий набор пуст, вам не нужно обновлять div.
Это изменение также, вероятно, потребует, чтобы вы предварительно добавили div, а не полностью перезаписали его.
посмотрите на setInterval(function, time)
в javascript, чтобы сделать цикл каждым «временем» (в миллисекундах),
и функцию $.ajax()
в jQuery для передачи информации на сервер.
Кроме того, вам нужно создать новый контент с помощью .html()
или .append()