限制单页中的帖子数量

时间:2017-08-16 20:29:01

标签: php pagination

我想限制页面上的帖子数量。这是我正在使用的代码: -

<?php 
                            $query="select * from namedb";
                            $result=mysqli_query($connect,$query);
                            while($r=mysqli_fetch_assoc($result))
                            {
                            ?>
                        <tr>
                            <td><?php echo $r['title']?></td>
                            <td><?php echo $r['comment']?></td>
                            <td><?php echo $r['cgender']?></td>
                            <td><?php echo $r['cnumerology']?></td>
                            <td><?php echo $r['creligion']?></td>
                        </tr>
                        <?php } ?>

并使用此代码进行分页

<?php
                                    $query="select * from namedb";
                                    $result=mysqli_query($connect,$query);
                                    $count=mysqli_num_rows($result);
                                    $pages=ceil($count/10);
                                    for($i=1;$i<=$pages;$i++) { ?>
                                        <a href="links.php?p=<?php echo $i; ?>">
                                        <?php echo $i;?></a>
                                <?php } ?>

我的数据库中有21个帖子,我的页面上显示了20个帖子,但分页显示为1 2 3和2&amp;第3页显示相同的数据。如何解决它。

我想在每页显示30条记录,如果页面的记录少于30条,则不会显示分页。

3 个答案:

答案 0 :(得分:0)

当您从数据库中获取名称时,代码中没有任何内容实际执行任何分页。将第一部分更改为以下代码,并保持代码的第二部分相同。

$page = 1;
$per_page = 10;
if(isset($_GET['p']) && is_numeric($_GET['p']) )
    $page= $_GET['p'];
$offset = ($page -1) * $per_page;

$query="select * from namedb LIMIT $offset, $per_page  ";
$result=mysqli_query($connect,$query);
while($r=mysqli_fetch_assoc($result))
{ ?>
    <tr>
    <td><?php echo $r['title']?></td>
    <td><?php echo $r['comment']?></td>
    <td><?php echo $r['cgender']?></td>
    <td><?php echo $r['cnumerology']?></td>
    <td><?php echo $r['creligion']?></td>
    </tr>
<?php } ?>

答案 1 :(得分:0)

我认为您正在寻找的是MySQL <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue= [];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)} (window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', 'myid'); // Insert your pixel ID here. fbq('track', 'PageView'); var button = document.getElementById('Get Started'); button.addEventListener( 'click', function() { fbq('track', 'Lead', { content_name: 'Get Started Submissions', content_category: 'Form Fill', value: 0.00, currency: 'USD' }); }, false ); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id='myid'&ev=PageView&noscript=1" /></noscript> <!-- DO NOT MODIFY --> <!-- End Facebook Pixel Code --> 命令。例如,通过写

LIMIT

您将获得第一批,第二批,第三批30个结果。这里,第一个数字是给出偏移量(注意它从0开始,所以30实际上给出了第31个结果),而第二个数字表示将返回多少个条目。

您可以通过计算GET参数SELECT * FROM namedb LIMIT 0,30 SELECT * FROM namedb LIMIT 30,30 SELECT * FROM namedb LIMIT 60,30 ... 的偏移量将其集成到脚本的第一部分中,如下所示:

p

$length_of_page = 30; $page = intval($_GET["p"]); $offset = $page * $length_of_page; $query = "SELECT * FROM namedb LIMIT $offset, $length_of_page" 函数确保您确实在查询中插入了一个数字。这对于避免SQL注入非常重要。

答案 2 :(得分:0)

使用以下代码

<?php 
                            $query="select * from namedb limit 0,30";
                            $result=mysqli_query($connect,$query);
                            while($r=mysqli_fetch_assoc($result))
                            {
                            ?>
                        <tr>
                            <td><?php echo $r['title']?></td>
                            <td><?php echo $r['comment']?></td>
                            <td><?php echo $r['cgender']?></td>
                            <td><?php echo $r['cnumerology']?></td>
                            <td><?php echo $r['creligion']?></td>
                        </tr>
                        <?php } ?>