Как избежать дублирования записи на нумерацию страниц в php? - PullRequest
0 голосов
/ 23 сентября 2019

Я сделал нумерацию страниц в php.но после определенной записи он отображает повторяющиеся записи из определенных строк.

Мой запрос при первой загрузке страницы:

select * from sakhe WHERE status = 1 ORDER BY sakhe_id ASC limit 0,30

Мой запрос при второй прокрутке (выполняется дважды при одной прокрутке)

select * from sakhe WHERE status = 1 ORDER BY sakhe_id ASC limit 30,30

после этого запроса я нашел правильные данные в консоли.но он отображает дубликат на сайте.

Мой Js-код выглядит следующим образом

var page = 1;
var total_page = "";

function getresult(searches) {

    $.ajax({
        url: "process/Sakhe_list.php",
        type: "post",
        data: {
            Sakhe_name: $("#Sakhe_name").val(),
            page: page
        },

        success: function (data) {
            if (searches == true) {


                $("#rows").html(data);
            } else {
                $("#rows").append(data);
            }
        }
    });
}

$(document).ready(function () {

    getresult(false);

    $(window).scroll(function () {
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - 5) {

            if ($(".current_page:last").val() <= $("#total_page").val()) {
                page = parseInt($(".current_page:last").val()) + 1;
                getresult(false);
            }
        }
    });


    $("#shopsubmit").click(function () {
        page = 1;
        getresult(true);
    });

    $("#reset").click(function () {
        $("#Sakhe_name").val("");


        page = 1;
        getresult(true);
    });



Мой PHP-код выглядит следующим образом

extract($_REQUEST);

$perPage = 30; // total records per page
// page
$conditionArr = array(); // array for condition
$condition = ""; // conditions

$pages = ""; // how many pages created
$type = "";
$company = "";
$message = "";

$rersArr = array();
$data = array();
$templeArr = array();


if ($Sakhe_name != "") {
    array_push($conditionArr, "name LIKE '%" . $Sakhe_name . "%'");
}
$sql = "select * from sakhe WHERE status = 1 ";

if (sizeOf($conditionArr) > 0) {
    $condition = implode(" AND ", $conditionArr);
//    echo $condition;
    $sql .= " AND $condition";
}

$start = ($page - 1) * $perPage;
$sql1 = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$count = mysqli_num_rows($sql1);
$pages = ceil($count / $perPage);
$sql .= " ORDER BY sakhe_id ASC";
$sql .= " limit $start,$perPage ";
print_r("final ".$sql);
?>

    <tr style="display:none;">
        <td colspan="5">
            <input type="hidden" name="total_page" id="total_page" value="<?php echo $pages; ?>">
            <input type="hidden" name="current_page" class="current_page" id="current_page"
                   value="<?php echo $page; ?>">
        </td>
    </tr>

В настоящее время я получаю последние 7 повторяющихся записей.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Проблема с вашим состоянием searches == true.это каждый раз, когда данные добавляются в HTML.Почини это.Это будет работать нормально.Просто удалите условие и используйте следующий код:

if(data !== 'undefined' && data !== '') { 
 $("#rows").html(data); 
}
0 голосов
/ 23 сентября 2019

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

select DISTINCT from sakhe WHERE status = 1 ORDER BY sakhe_id ASC limit 0,30

и:

select DISTINCT from sakhe WHERE status = 1 ORDER BY sakhe_id ASC limit 30,30
...