繁体   English   中英

在 php 和 mysql 中使用 javascript 进行分页

[英]pagination using javascript in php and mysql

我正在尝试使用 javascript 进行分页,但都是徒劳的,请帮助..

<script language="Javascript">
function nextclicked()
{ 
document.getElementById("clickednext").value = document.getElementById("clickednext").value + 1;
document.forms["newsmanager"].submit();
}
</script>

<form name = "newsmanager" method="post" action="NewsManager.php">
<input type = "hidden"  id="clickednext" name="clickednext" > 


if(isset($_POST['clickednext']) && $_POST['clickednext']>=1)
{    
$_POST['clickednext'] = $_POST['clickednext'] +9; 
$NewsQuery = "SELECT NewsDetails FROM News LIMIT " .$_POST['clickednext']. ",10";
    }
    else
    {
    $NewsQuery  = "SELECT NewsDetails FROM News LIMIT 0,10";
    }

    $result = mysqli_query($dbc,$NewsQuery);
}

更新:

     <div class=d2 align=left>
<a  href="#" onclick=" nextclicked(); submit();" >
Next
</a>

更新结束......

第一次点击 Next 超链接 label 时,它起作用了,即 10 被分配 $_POST['clickednext'] 并且接下来的 10 个值从数据库中出现,但第二次我点击 label,然后它没有不是吗?

您的代码完全错误。 你应该放弃它并重新开始。 我会告诉你如何做到这一点。

对于 Ajax,我有一个规则,它是这样的。 如果您在没有 Ajax 的情况下无法执行此功能,则您无法尝试使用 Ajax 执行此操作。

如果您对 javascript 有所了解,您就会知道 XmlHttpRequest 使与 Ajax 的合作变得糟糕透顶。 因此我们有 javascript 框架,例如 JQuery 和 Mootools。 您可能还喜欢名为 PHPLiveX 的 php ajax 框架。 我只使用JQuery,所以这里是JQuery中的解决方法。

第 1 步:剥离 ajax 并在 php 中创建解决方案

php 中的这个分页教程会有所帮助。

步骤 2a:使用 PHPLiveX 创建 ajax PHPLiveX 真的很酷且被低估了,因为它允许您使用 php 函数而无需重新加载整个页面,这比使用 ZDE9BFD762321E 更方便。

PHPLiveX 将为您提供最好的帮助。 这很简单。 您调用 php function 来执行某些操作,返回一些值,然后选择目标:您希望将值设置为 go 的位置。

我个人会使用 PHPLiveX 来完成这项工作,因为它更适合。 JQuery 更多用于 postdata。

步骤 2b:在 JQuery 中创建 ajax

我将假设您知道如何通过 id 使用 JQuery 和 append 或替换它们来使用 select 元素。 如果没有,您可以查看 function。

以下是使用 JQuery 提交 POST 或 GET 所需的代码。 将此适应您的代码。 您必须修改下面的代码以添加附加内容。

$(".tornfieldcard").click(function() {

    var dataString = $("#addfieldForm").serialize();
        //lets get the form data and use that
    var newValue = $("#newValue").val();
    var itemid4 = $(this).attr("itemid4");
    var dataString = "itemid=" + itemid + "&newValue=" + newValue;
        //or get the attr/valu from elements

    $("#loading5").show();
    $("#loading5").fadeIn(400).html('<img src="icons/loading.gif">');

    $.ajax({
    type: "POST",
    url: "ajaxcontrols.php",
    data: dataString,
    cache: false,
    success: function(html){

    $("#loading5").remove();
    $(".fieldcardNEW").fadeOut('slow');
    $('.fieldcardNEW').remove();

    $("#conveyorbelt_"+itemid4+"").append("<div class=\"fieldcard\"><b>"+attribute+"</b>  <br><div itemid=\""+itemid4+"\" attribute=\""+attribute+"\">"+value+"</div></div>");
    }
});

PHP 是服务器端语言。 你必须把你的 php 代码

<?php

=====

<script language="Javascript">
function nextclicked()
{ 
document.getElementById("next").value = document.getElementById("next").value + 1;
document.forms["newsmanager"].submit();
}
</script>

<form name = "newsmanager" method="post" action="NewsManager.php">
<input type = "hidden"  id="clickednext" name="clickednext" > 

<?php
if(isset($_POST['clickednext']) && $_POST['clickednext']>=1)
{    
$_POST['clickednext'] = $_POST['clickednext'] +9; 
$NewsQuery = "SELECT NewsDetails FROM News LIMIT " .intval($_POST['clickednext']). ",10";
    }
    else
    {
    $NewsQuery  = "SELECT NewsDetails FROM News LIMIT 0,10";
    }

    $result = mysqli_query($dbc,$NewsQuery);
}
?>

此外,用户不能点击隐藏的表单域。 例如,您需要按钮并准备好 onclick 事件

<button name="next" value="1" onclick="nextclicked();">Next</button>

这是我使用 php 编写的一个小算法来创建分页:

$x=$numStories;
$y=$x%5;
$z=($x-$y)/5;
if($y!=0){
    $numPages=$z+1;
}
else{
    $numPages=$z;
}

其中 5 是每页的故事数, $numStories是您希望使用的故事总数(或在您的情况下为新闻文章)。

然后,只需以您喜欢的任何方式显示页面数量( $numPages ),以及您对 go 的好处。

[编辑]

我创建了一个archive.php页面,该页面将页码作为 GET 参数( archive.php?page=3 )。 从那里,我选择了数据库中$pageNum (在本例中为 3)* 10 (或者您希望显示的每页有多少帖子)之后的前五个条目。

最好的办法是让你的代码尽可能多地动态和灵活,这样它就可以自我维持。

[编辑 2]

<script>
function nextclicked()
{ 
    document.forms["newsmanager"].submit();
}
</script>

<?php
    $currentPage = $_POST['page'];

    $numStories = //get the total amount of entries
    $x=$numStories;
    $y=$x%10;
    $z=($x-$y)/10;
    if($y!=0){
        $numPages=$z+1;
    }
    else{
        $numPages=$z;
    }

    if(isset($currentPage) && $currentPage>=1)
    {    
    $currentPage = $currentPage +9; 
    $NewsQuery = "SELECT NewsDetails FROM News LIMIT " .$currentPage. ",10";
        }
        else
        {
        $NewsQuery  = "SELECT NewsDetails FROM News LIMIT 0,10";
        }

        $result = mysqli_query($dbc,$NewsQuery);
    }

?>

<form>
    <input type='hidden' name='page' text='' value='<?php echo "$currentPage"' />
</form>
<a href="#" onclick="nextClicked()">Next--></a>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM