Как показать 1 результат на страницу в PHP - PullRequest
0 голосов
/ 25 марта 2019

У меня есть три ресторана в моей базе данных (MySQL) только для тестирования, и я попытался создать некоторый код разбиения на страницы, который бы показывал мне один ресторан на страницу.

Итак, я реализовал некоторый код, но моя проблема в том, что на каждой странице снова и снова отображаются все рестораны.

          <?php
            $page = 1;
            if(isset($_GET['page']))
            {
                $page = $_GET['page'];
            }

                $query=mysqli_query($con,"SELECT * FROM restaurants LIMIT 10". ($page * 10 - 10));
                $result = mysqli_query($con,"SELECT COUNT(*) as c FROM restaurants");
                $row = mysqli_fetch_assoc($result);
                $numberOfPages = $row['c'] / 1;
                for ($i = 1; $i <= $numberOfPages; $i++)
                {
                 echo '<a style="margin-left:10px;" href="allrestaurants.php?page='. $i . '">' . $i . '</a>';
                }
                if (!empty($query)) 
                {
                    if(mysqli_num_rows($query)>0)
                     {
                        while ($row=mysqli_fetch_assoc($query)) 
                        {
                            $resId=isset($row['id'])?$row['id']:''; ?>


                    <div class="col-md-4 p-t-30">
                    <!-- Block1 -->
                    <div class="blo1">
                        <?php
                        $q="SELECT * FROM restaurant_images JOIN restaurants ON restaurant_images.resaurant_id=restaurants.id AND restaurants.id='$resId'";
                        $queryRestaunt_image=mysqli_query($con,$q);
                        if (!empty($queryRestaunt_image)) 
                          {
                           if(mysqli_num_rows($queryRestaunt_image)>0)
                         {
                           $count=0;
                            while ($image=mysqli_fetch_assoc($queryRestaunt_image)) 
                        {

                            $count++;
                         ?>

                             <a href="restaurantdetails.php?id=<?=$resId?>">
                             <div class="wrap-pic-blo1 bo-rad-10 hov-img-zoom" >
                             <div style="background:url('./images/restaurants/<?=isset($image['image'])?$image['image']:'intro-01.jpg'?>') no-repeat center; background-size:  contain;height:230px; background-color: black">  
                            </div>
                        </div>
                    </a>

                        <?php
                        if($count==1)break;
                    }
                }
            }
            ?>

Я ожидаю, что у меня только один результат на страницу.

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

Вам необходимо изменить SQL-запрос, чтобы правильно использовать предложение LIMIT:

SELECT * FROM restaurants LIMIT <page offset>, <number of restaurants per page>;

Пример:

$query = mysqli_query($con, "SELECT * FROM restaurants LIMIT " . ($page - 1) . ", 1");
1 голос
/ 25 марта 2019

$query=mysqli_query($con,"SELECT * FROM restaurants LIMIT 10". ($page * 10 - 10));

Вы можете ограничить до ОДНОГО, изменив здесь:

$query=mysqli_query($con,"SELECT * FROM restaurants LIMIT 1". ($page * 10 - 10));

Тогда вам нужно будет проверить свою логику системы нумерации страниц ... если 10 в ($page * 10 - 10) используется 10, потому что по умолчанию нумерация страниц будет 10, тогда вам придется менять 10 на 1 в каждой строке ...

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