【问题标题】:How to integrate pagination on a jquery/ajax unsorted list ?如何在 jquery/ajax 未排序列表上集成分页?
【发布时间】:2011-11-05 17:49:51
【问题描述】:

这是我的问题。我已经尝试了很多东西,并意识到我现在可以在我的大脑上煮一个鸡蛋。我需要你的帮助。

我需要在发布内容的 div 上添加分页。更具体地说,对用户生成的列表进行分页。

这是在我的 index.php 中:

<div id="head">
<form name="postbar_add_post" id="postbar_add_post" method="post">
    <fieldset>
        <legend>What are you doing now? ...</legend>
        <input type="text" name="addcontentbox" id="addcontentbox" maxlength="200" />
        <input type="submit" name="addpost" value="Submit" class="submit" />
        </fieldset>
</form>
</div>

<div id="cuerpo"><ul id="wall"></ul></div> 

提交文本时,它使用以下 JavaScript 代码发布该 div 的数据:

// This is the script to post whats typed on the input to the div called wall:
<script type="text/javascript">
    $.noConflict();
    jQuery(document).ready(function() {
        jQuery("form#postbar_add_post").submit(function() {
            var addcontentbox = jQuery('#addcontentbox').attr('value');
            if (addcontentbox.replace(/\s/g,"") == "") {
                return false;
            }
            jQuery.ajax({
                type: "POST",
                url: "postear.php",
                data: "addcontentbox=" + addcontentbox,
                success: function() {
                    jQuery("ul#wall").prepend("<li>"+addcontentbox+"</li>");
                    jQuery("ul#wall li:first").fadeIn();
                    document.postbar_add_post.addcontentbox.value = '';
                    document.postbar_add_post.addcontentbox.focus();
                }
            });
            return false; 
        });
    });
</script>

我正在使用$.noConflict();,因为我已经尝试使用另一个名为 Jpagination 的 jquery 插件对其进行分页。 不幸的是,没有好的结果。如果您想检查,请单击here

前面的 Ajax 代码调用 PHP 文件将消息插入数据库。

这是php代码:

<?php
if(isset($_POST['addcontentbox'])) {
    // Connection to Database
    include('config.php');
    // NO Query Injection
    $message = mysql_real_escape_string($_POST['addcontentbox']);

    // echo
    $sql = 'INSERT INTO WALL (message) VALUES( "'.$message.'")';
    mysql_query($sql);
    echo $message;
}
else
{ 
    echo '0';
}
?> 

所以,我尝试将分页与 PHP 集成,但我真的迷路了。然后我在网上找到了一些用于分页的脚本,但这让我更糟。

所以我真的需要帮助。

谁能告诉我如何将分页添加到 index.php 上的未排序列表中?

【问题讨论】:

  • 您希望页面随着用户在表单中输入的次数越来越多而显示吗?或者当人们查看主要的 index.php 时,您是否只需要页面?我假设您正在执行查询并使用页面加载时的消息填充您的
  • 是的,我希望页面显示为用户在表单中输入越来越多的信息。
  • 哦,是的,我正在填充 ul。谢谢。

标签: php javascript jquery mysql pagination


【解决方案1】:

好吧,我仍然不是 100% 清楚您希望它如何运作,但我有一个想法。假设您想在一个页面上显示 10 条消息。所以当页面第一次加载时,它将有 10 个最新的 cmets。(你可以通过稍微改变你的 SQL 查询来做到这一点)你还希望你的 index.php 在查询字符串中接受一个页面变量,所以你知道加载什么页面。喜欢index.php?page=1。 然后你可以编写你的初始查询来获取这样的消息:(在这样做之后$page = $_GET['page'];

"SELECT * FROM wall ORDER BY id DESC LIMIT $page*10, 10"

除了获取最新消息之外,您还想知道总共有多少条消息,以便知道您有多少页。您也可以使用 sql 查询来获得它。

"SELECT COUNT(*) FROM wall"

现在让我们回到你的html。使用jQuery("ul#wall li:first").fadeIn(); 淡入新发布的消息后,您可以使用jQuery("ul#wall li:last").fadeOut(); 淡出最旧的消息

要列出页面列表,只需将消息总数除以每页的消息数即可计算出您需要多少页。然后,您可以使用 php for 循环来回显出一堆带有类似页码的链接。

<? for($i=0; $i<$total_pages; $i++) { ?>
    <a href="index.php?page=<?=$i;?>"><?=$i;?></a>
<? } ?>

因此,当有人单击其中一个链接时,它将使用正确的消息重新加载您的页面。当然,你可以用这个做更多的事情,但我认为这是基本的想法。希望对你有帮助。

【讨论】:

  • @Ivan 不客气!我并没有完全把它的每一部分都给你,但我认为它应该会有所帮助。您可以做一些额外的事情,例如为当前页面添加不同的 css 样式,为上一页和下一页添加链接等。
猜你喜欢
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 2014-12-14
相关资源
最近更新 更多