Я очень запутался, и я не знаю, как решить эту проблему, я не уверен, нужно ли мне корректировать jQuery или SQL, чтобы правильно показать это без дубликатов. Я просто не знаю, поэтому у меня есть этот скрипт, который загружает набор записей каждый раз, когда вы нажимаете кнопку «Загрузить больше».
Это прекрасно работает, но если я добавлю новую запись перед загрузкой следующего набора записей, он покажет дубликат последней записи из предыдущего набора записей в следующий набор записей. Два приведенных ниже примера представляют числа в виде записей
Example 1
Нормальная ситуация: записи из любого источника не добавлены
Всего записей 6
6,5,4 ( Загрузить еще ) 3,2,1
Example 2
Новая запись добавляется из любого источника перед загрузкой следующего набора записей с помощью кнопки «Загрузить еще»
Всего записей 6
6,5,4 ( Новая запись добавлена, например, в php my admin без использования этого скрипта ) 4,3,2
Как вы можете видеть в примере 2, я добавил новую запись в php my admin перед тем, как загрузить следующий набор записей, и вы можете видеть, что первая загрузка содержит записи 6,5,4, а следующая загрузка записей содержит 4, 3,2 уведомления, он показывает 4 снова, он должен показать 3,2,1
Это самый простой способ описать мою проблему. Я добавил gif скриншоты своей проблемы, чтобы лучше понять, с чем я столкнулся. Обратите внимание на номера 228 и 227, которые находятся внутри желтого шара. Это нормальная рабочая ситуация, которая проиллюстрирована в первом примечании к скриншоту gif. Никакая новая запись не добавлена ни из одного источника.
![Normal example](https://i.stack.imgur.com/iiLxq.gif)
На этом скриншоте gif я добавил новую запись из другого источника, например, в php my admin, прежде чем загружать следующий набор записей кнопкой load more. Это моя проблемная ситуация, которую я пытаюсь исправить, обратите внимание на 228 в желтом шаре, вы можете видеть, что он показывает 228 два раза, потому что я добавил новый рекорд за кулисами. Он должен показывать 228 раз независимо от того, добавил я новую запись за кулисами или нет.
![Unexpected example](https://i.stack.imgur.com/FvBE3.gif)
Так как я могу исправить эту проблему? Я не хочу, чтобы повторяющаяся запись отображалась при следующей загрузке, потому что я добавил новую запись перед загрузкой следующего набора записей.
Дайте мне знать, вызывает ли это jQuery или SQL.
Мой код
index.html
<!DOCTYPE html>
<html>
<head>
<style>
#load-more-button {
width: 100px;
margin: auto;
display: block;
}
.results-container {
width: 350px;
margin: auto;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function (){
/*<load more by pressing a button script>*/
//<settings define
var start = 0;
var limit = 10;
//
//Call the ajax request on page load
getData();
//
//load more records by pressing a button
$('#load-more-button').click(function(){
getData();
});
//
/*<function>*/
function getData() {
//settings variable
var settings = {
getData: 1,
start: start,
limit: limit
};
//
//result variable
var result= function(response) {
start += limit;
$(".results-container").append(response);
}
//
//request
$.ajax({
url: 'data.php',
type: 'POST',
dataType: 'text',
data: settings,
success: result
});
}
/*</function>*/
/*</load more by pressing a button script>*/
});
</script>
</head>
<body>
<div class="results-container"></div>
<button id='load-more-button'>Load more</button>
</body>
</html>
data.php
<?php
$servername='localhost';
$username='jd';
$password='1234';
$db_name= 'test';
$connect = new mysqli($servername,$username,$password,$db_name);
$start = $connect->real_escape_string($_POST['start']);
$limit = $connect->real_escape_string($_POST['limit']);
$query = "SELECT*FROM records WHERE NOT status='remove' ORDER BY ID DESC LIMIT $start, $limit";
$result= $connect->query($query);
?>
<style>
#number{
background-color: gold;
color: black;
border-radius: 100%;
padding: 5px;
}
h2{
display: inline-block;
}
</style>
<?php while($row = $result->fetch_assoc()) { ?>
<h2 id='number' ><?php echo $row['id']; ?></h2>
<h2><?php echo $row['html_id']; ?></h2>
<p><?php echo $row['source']; ?></p>
<?php } ?>
<h1>
<?php
//Conditional statement if there is no more records to load
if($result->num_rows == 0){
echo 'End';
echo'
<script>
$("#load-more-button").css({"display": "none"});
</script>
';
}
//
?>
</h1>