Как сохранять страницы через куки и загружать после обновления AJAX + PHP + MySQL?

Olga93

Новичок
Делаю постраничную навигацию через PHP + MySQL и Ajax без перезагрузки страницы. Нужно сделать чтобы текущая страница сохранялась в куки (COOKIES) и загружалась после обновление страницы.

Например я перешла на страницу 2 она сохранилась. Потом я нажимаю обновить кнопка в браузере и страница обновляется но показывается вторая страница..
Без COOKIES код работает вот так:



C COOKIES начинаются проблемы. Пример ниже.



Как сделать сохранение по COOKIES?
Вот мой код index.php
HTML:
 <!DOCTYPE html> 
 <html> 
      <head> 
           <title>Webslesson Tutorial | Make Pagination using Jquery, PHP, Ajax and MySQL</title> 
           <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
           <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
           <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
      </head> 
      <body> 
           <br /><br /> 
           <div class="container"> 
                <h3 align="center">Make Pagination using Jquery, PHP, Ajax and MySQL</h3><br /> 
                <div class="table-responsive" id="pagination_data"> 
                </div> 
           </div> 
      </body> 
 </html> 
 <script> 
 $(document).ready(function(){ 
      load_data(); 
      function load_data(page) 
      { 
           $.ajax({ 
                url:"pagination.php", 
                method:"POST", 
                data:{page:page}, 
                success:function(data){ 
                     $('#pagination_data').html(data); 
                } 
           }) 
      } 
      $(document).on('click', '.pagination_link', function(){ 
           var page = $(this).attr("id"); 
           load_data(page); 
      }); 
 }); 
 </script>
Код получение данный через AJAX и PHP pagination.php.
PHP:
<?php 

 $connect = mysqli_connect("localhost", "root", "", "testing"); 
 $record_per_page = 5; 
 $page = ''; 
 $output = ''; 
  $page_link = 3;
 
 
 if(isset($_POST["page"])) 
 { 
      $page = $_POST["page"]; 
      setcookie("page",$page,time()+(30*24*50*60),'/');
 } 
 else 
 { 
      $page = 1; 
 } 
//
if(!empty($_COOKIE['page']))
   $page = $_COOKIE['page']; 
 
 $start_from = ($page - 1)*$record_per_page; 
 $query = "SELECT * FROM tbl_student ORDER BY student_id DESC LIMIT $start_from, $record_per_page"; 
 $result = mysqli_query($connect, $query); 
 $output .= " 
      <table class='table table-bordered'> 
           <tr> 
                <th width='50%'>Name</th> 
                <th width='50%'>Phone</th> 
           </tr> 
 "; 
 while($row = mysqli_fetch_array($result)) 
 { 
      $output .= ' 
           <tr> 
                <td>'.$row["student_name"].'</td> 
                <td>'.$row["student_phone"].'</td> 
           </tr> 
      '; 
 } 
 $output .= '</table><br /><div align="center">'; 
 $page_query = "SELECT * FROM tbl_student ORDER BY student_id DESC"; 
 $page_result = mysqli_query($connect, $page_query); 
 $total_records = mysqli_num_rows($page_result); 
 $total_pages = ceil($total_records/$record_per_page);
 
 //$number = (int)($total_pages/$total_pages);
 
 $number = (int)($total_records/$total_pages); 
 
 
 if((float)($total_records/$total_pages) - $number != 0) $number++;
 
 if($page > $page_link + 1)
    {   
      
      for($i = $page - $page_link; $i < $page; $i++)
      {
         $output .= "<span class='pagination_link' style='cursor:pointer; padding:6px; border:1px solid #ccc;' id='".$i."'>".$i."</span> | ";
      }
    }
    else
    {     
      
      for($i = 1; $i < $page; $i++)
      {
          $output.= "<span class='pagination_link' style='cursor:pointer; padding:6px; border:1px solid #ccc;' id='".$i."'>".$i."</span> | ";
      }
    }
    
    $output .= $i;
    
    if($page + $page_link < $number)
    {
      
      for($i = $page + 1; $i <= $page + $page_link; $i++)
      {
         $output .= " | <span class='pagination_link' style='cursor:pointer; padding:6px; border:1px solid #ccc;' id='".$i."'>".$i."</span>";
      }

    }
    else
    {
    
      for($i = $page + 1; $i <= $number; $i++)
      {
      
        $output .= " | <span class='pagination_link' style='cursor:pointer; padding:6px; border:1px solid #ccc;' id='".$i."'>".$i."</span>&nbsp;";
        
      }
    }
 

 $output .= '</div><br /><br />'; 
  if(isset($_COOKIE['page'])) echo $_COOKIE['page']; 
  echo $output;
 ?>
 

Тугай

Новичок
cookie устанавливай не в php а на в javascript в load_data перед ajax вызовом.
 

Тугай

Новичок
В PHP понятно как установить, а как установить в JavaScript?
на такие вопросы chatgpt нормально отвечает ) типа
Код:
const expiry = new Date();
expiry.setTime(expiry.getTime() + (30 * 24 * 60 * 60 * 1000));
document.cookie = `page=${encodeURIComponent(page)}; expires=${expiry.toUTCString()}; path=/`;
 
Сверху