PHP извлекает одни и те же записи снова и снова - PullRequest
0 голосов
/ 27 ноября 2018

ПРИМЕЧАНИЕ. Пожалуйста, не отмечайте мой вопрос как дубликат.

Я пытаюсь получить новые записи, пока нажата кнопка «Загрузить еще».

Проблема, с которой я здесь сталкиваюсь, заключается в том, чтоЯ не могу изменить значения переменных $Limit и $offset, и в результате одни и те же записи выбираются снова и снова.

HTML-код:

<body>
    <nav>
        <h1 id="h1Nav">Myheading</h1>
        <ul>
            <li><a onclick="window.location('Home.html');" href="">Home</a></li>
            <li><a href="#">Contact</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Info</a></li>
        </ul>
    </nav>
    <section id="contentSection">
    </section>
    <button name="LOAD_MORE_REQUEST" value="loadMoreButton" onclick="loadContent();" id="LoadMoreButton">Load more
    </button>

    <section id="footerSection">
        <form action="">
            <p>Enter You email adress and get notified:-</p>
            <input type="email" id="footerEmailInput" name="footerEmailInputField" placeholder="Please enter yor email...">
            <input type="submit" id="submitFooterEmailInputFieldSubmitButton"  name="submitFooterEmailInputField">
        </form>
        <div id="linksDivFooterSection">
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">Privacy</a></li>
                <li><a href="#">Events</a></li>
                <li><a href="#">Contacts</a></li>
            </ul>
        </div>
    </section>
    <script src="Home.js" type="text/javascript"></script>
</body>

</html>

JSкод:

function loadContent(){
    var loadMoreButton = document.getElementById("LoadMoreButton").value;
    var sendLoadContentRequest = new XMLHttpRequest();
    requestQuery_Data = new FormData();
    requestQuery_Data.append("LOAD_MORE_REQUEST", loadMoreButton);
    sendLoadContentRequest.open("POST", "LoadContent.php", true);
    sendLoadContentRequest.send(requestQuery_Data);
    DefaultText = document.getElementById("contentSection").innerHTML;
    sendLoadContentRequest.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          document.getElementById("contentSection").innerHTML = DefaultText +  sendLoadContentRequest.responseText;
           }
        }
}
window.onload = loadContent();

Вот мой код PHP:

require("connection.php");

ini_set('display_errors', 'On');    //to get errors displayed
error_reporting(E_ALL);     // to kep errors on

if(isset($_POST["LOAD_MORE_REQUEST"])){
    loadContentOnPage();
}
else{
    echo("Error");
}

function loadContentOnPage()
{
    global $offset;
    global $Limit;

    if(isset($_POST['Offset_Field_Request'])) {
        echo($offset);
        echo($Limit);
        $offset = $offset + 2;
        $Limit = $Limit + 0;
    }

    global $Preview_img;
    global $myconnection;
    global $Tag1;
    global $Tag2;
    global $Tag3;
    global $Tag4;

    $retriveQuery_Article = "SELECT ArticleTitle, PreviewText, PreviewImage FROM Articles ORDER BY ID DESC LIMIT $Limit, $offset";
    $query_run = mysqli_query($myconnection, $retriveQuery_Article);


    if(!$query_run){
        echo("Error.... " . mysqli_error($myconnection));
    }

    while($result_Article = mysqli_fetch_assoc($query_run)) {
        $Article_Title = $result_Article['ArticleTitle'];
        $Article_PreviewText = $result_Article['PreviewText'];
        $Article_PreviewImg = $result_Article['PreviewImage'];
        $retriveQuery_Img = "SELECT imagePath, tag1, tag2, tag3, tag4 FROM image WHERE name='$Article_PreviewImg'";
        $query_run_img = mysqli_query($myconnection, $retriveQuery_Img);
        if(!$query_run_img){ echo("Again error.... " . mysqli_error($myconnection)); }
        while($result_img = mysqli_fetch_assoc($query_run_img)){
            $Tag1 = $result_img['tag1'];
            $Tag2 = $result_img['tag2'];
            $Tag3 = $result_img['tag3'];
            $Tag4 = $result_img['tag4'];
        }


        $response = '
            <section class="ArticleSection1">
                <div class="imageDivArticleSection1">
                    <img src="' . $Preview_img . '"></img>
                </div>
                <div class="PreviewTextDiv">
                    <h1>' . $Article_Title . '</h1>
                    <br>
                    <p> '
                    . $Article_PreviewText .
                    '</p>
                    <br>
                    <button>Read more</button>
                    <span class="TagSpan"><a class="TagLink"> Dev ' . $Tag1 . '</a></span>
                    <span class="TagSpan"><a class="TagLink"> Dev ' . $Tag2 . '</a></span>
                    <span class="TagSpan"><a class="TagLink"> Dev ' . $Tag3 . '</a></span>
                    <span class="TagSpan"><a class="TagLink"> Dev ' . $Tag4 . '</a></span>
                </div>
            </section>
        ';

        echo($response); 
    }
}

1 Ответ

0 голосов
/ 27 ноября 2018

Извините, но я не увидел строку в вашем коде, где вы пытаетесь переписать вашу переменную $ offset.

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

ex ваш запрос может связаться с GET & page = 2

'PAGE' - количество загруженных страниц, которые вы сохраняете в JS на стороне пользователя.

На стороне пользователя в JS у вас должна быть переменная «var page = 1», и когда пользователь нажимает кнопку «MORE», вы должны отправить AJAX-запрос с параметром GET «page» и увеличить на 1 вашу переменную «var page»;

На вашей стороне сервера с помощью php вы получаете параметр url 'page' и умножаете его на свой лимит, так что вы получите свое смещение.

Я не написал все пункты, но я надеюсь, что этопоможет тебе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...