как извлечь следующие / предыдущие строки из базы данных с помощью ajax

#php #ajax

#php #ajax

Вопрос:

Я пытаюсь извлечь следующие предыдущие строки из базы данных mysql в ajax

Мне удалось это сделать, но у меня проблема, когда я нажимаю предыдущую кнопку, она всегда возвращает меня к первому результату

 <script>
    $(document).ready(function(){
        var card_id = document.getElementById('cardid').value
        $(document).on('click', '#previous', function(){
            $.ajax({
                url:"includes/fetchcards.php",
                method:"POST",
                dataType: 'json',
                data:{card_id:card_id,prev:1},
                success:function(data)
                {

                    $('#cardfront').text(data.front)
                    $('#cardback').text(data.back);
                    card_id = data.id
                    alert(card_id)



                }
            });
        });

        $(document).on('click', '#next', function(){
            $.ajax({
                url:"includes/fetchcards.php",
                method:"POST",
                dataType: 'json',
                data:{card_id:card_id, next:1},
                success:function(data)
                {
                    $('#cardfront').html(data.front)
                    $('#cardback').html(data.back);
                    card_id = data.id
                    alert(card_id)



                }
            });
        });

    });
</script>
  

php-код

 <?php
include 'config.php';
if(isset($_POST["card_id"]))
{
    $card_id = $_POST["card_id"];
    if(isset($_POST["next"])){
        $db->where("id", $card_id,  ">") ;
        $flaschcard = $db->getOne('cards') ;
    }
    if(isset($_POST["prev"])){
        $db->where("id", $card_id,  "<") ;
        $flaschcard = $db->getOne('cards') ;
    }
    if(isset($flaschcard)) {
        echo json_encode($flaschcard);
    }
}


  

Я ожидаю, что когда я нажимаю предыдущую кнопку, она показывает предыдущую строку, но она всегда возвращает меня к первому результату

Комментарии:

1. Вам также нужно показать нам свой php-код

2. я обновил свой php-код

3. Представьте, что ваш where разделит результат пополам. Если вы попытаетесь извлечь следующую, вы можете взять первую запись из второй половины. Если вы попытаетесь извлечь предыдущую, вы не сможете использовать первую запись первой половины, поскольку это первая запись из всех. Вы можете обойти это, изменив порядок

4. я использую PHP-MySQLi-Database-Class github.com/ThingEngineer/PHP-MySQLi-Database-Class#select-query вот пример того, как это работает $db-> where (‘id’, 50, «>=»); // или $db->where (‘id’, массив (‘>=’ => 50)); $ результаты = $db->get (‘users’); // Выдает: ВЫБЕРИТЕ * ИЗ пользователей, ГДЕ id >= 50;

Ответ №1:

 if(isset($_POST["prev"])){
    $db->where("id", $card_id,  "<") ;
    $db->orderBy("id", "desc"); // Reverse the order to fetch the last one
    $flaschcard = $db->getOne('cards') ;
}