PHP пагинация и тэг select

70
31 октября 2021, 06:20

Есть такой вопрос про пагинацию и тэг select. Есть класс

require_once 'class_connect.php';
class Film extends Connection
{
  private $prop;

    public function __construct()
    {
        $this->conn=$conn;   
    }
    public function __get($key)
    {
        if(isset($this->prop[$key]))
        {
           return $this->prop[$key];
        }
       return false;
    }
    public function get_film_of_category(mysqli $conn) 
    {

        $queryselect = "SELECT name, category_id FROM category";
        $resultselect = mysqli_query($conn, $queryselect) or die("ERROR " . mysqli_error($conn)); 
        echo "<div class=\"input-group mb-3\" id=\"inputGroupSelect02\">";
        echo "<select name=\"select_genre\" class=\"custom-select\">";
        while($row = mysqli_fetch_array($resultselect))
        { ?>
            <div>
                <option value="<?php echo $row['category_id'];?>"> <?php echo $row['name'];?> </option>
          </div>
          <br/>
          <?php  
        } 
        echo "</select>";
        echo "<div class=\"input-group-append\">";
            echo "<button type='submit' class='btn btn-primary'   name = 'go' >GO</button>";
        echo "</div>";

        if(isset($_POST['go']))   
         {
            $catid = $_POST['select_genre'];
            if (isset($_GET['page']))
            {
              $page = $_GET['page'];
            }
            else
            {
                $page = 1;
            }
        $notesOnPage = 5;
        $from = ($page - 1) * $notesOnPage;
        $query = "SELECT name, rating, title, release_year, c.name FROM film f, film_category fc 
                       LEFT JOIN category c 
                       ON c.category_id = fc.category_id 
                       WHERE f.film_id = fc.film_id
                       AND fc.category_id= $catid
                       LIMIT $from, $notesOnPage ";
        $result = mysqli_query($conn, $query) or die("ERROR " . mysqli_error($conn)); 
        while($row = mysqli_fetch_array($result))
        {?> 
            <tr>
                  <th scope="row"><?php echo $this->prop[$key] = $row['name']; ?></th>
                  <td><?php echo $this->prop[$key] = $row['title']; ?></td>
                  <td><?php echo $this->prop[$key] = $row['release_year']; ?></td>
                  <td><?php echo $this->prop[$key] = $row['rating']; ?></td>
            </tr>
        <?php 
         }
        $query = "SELECT COUNT(*) AS count FROM category";
        $result = mysqli_query($conn, $query) or die("ERROR " . mysqli_error($conn));
        $count = mysqli_fetch_assoc($result)['count'];
        $pagesCount = ceil($count / $notesOnPage);
        ?>
        <nav aria-label="Page navigation example">
            <ul class="pagination">
                <li class="page-item">
                  <a class="page-link" href="#" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                    <span class="sr-only">Previous</span>
                  </a>
                </li>
        <?php
        for($i = 1; $i <= $pagesCount; $i++)
        {
            echo "<li class=\"page-item\"><a class=\"page-link\" href=\"?page=$i\">$i</a></li> ";
        }
                echo "<a class=\"page-link\" href=\"?page=$i\" aria-label=\"Next\">";
                ?>
                <span aria-hidden="true">&raquo;</span>
                <span class="sr-only">Next</span>
              </a>
            </li>
          </ul>
        </nav>
    <?php }
         }
}

Вызывается просто

<?php echo $value_category_film->get_film_of_category($conn); ?>

Select по категориям фильма берется из базы, (работает), фильмы по этим категориям тоже из базы, и пагинация для них тоже работает, но работает не очень правильно. При нажатии на ссылку например 2, в пагинации, select "обнуляется" на самое первое значение, и все на странице пропадает. В адресной строке соответственно появляется ссылка вида ....page=2, но для того что бы увидеть эту часть вывода на страницу, снова приходится нажимать кнопку на selecte (GO), что и понятно, это ведь прописано мной в коде.. Я не доганяю как реализовать это нормально, ведь если вынести пагинцию за нажатие кнопки select, то пагинаци яне будет иметь ничего общего с выбраним из selecta значения...

READ ALSO
gif анимация перестала двигатся

gif анимация перестала двигатся

Пытаюсь сохранить gif

71
Разваливается инфоблок в битрикс

Разваливается инфоблок в битрикс

работаю на Win10 x64, openserverНастройки по дефолту стоят такие http - apache_2

93
Как ввести целый текст через консоль?

Как ввести целый текст через консоль?

Есть задачаНужно ввести целый текст(с пробелами, переносом строк и прочее) через консоль

189
Не работает макрос Freemarker в Spring Boot

Не работает макрос Freemarker в Spring Boot

Всем привет! Ребята, помогите плз разобраться с макросами FreemarkerЯ абсолютный новичок в этой теме

142