【问题标题】:PHP Mysql Table PaginationPHP Mysql 表格分页
【发布时间】:2016-01-29 02:55:30
【问题描述】:

我一直在尝试在桌子上制作一个带有分页的页面。单击按钮后,main.php 中的表由 page.php 中的查询检索到的前 16 行填充。例如,检索到的行是 20。因此第二页将超过 4。问题是当我单击“下一步”按钮以显示丢失的 4 条记录时,页面随后被转移到缺少记录的 page.php。我想要发生的是将 main.php 中的 20 条记录替换为 4 条记录。

MAIN.PHP

<div id="section">
    <head3>Asset Assignment</head3><br><br>
    <table>
        <td>
            <tr>Search Asset:</tr>
            <tr><input type="text" id="sidt" name="sid"></tr>
            <tr><input type="button" name="searchSub" value="Search" onClick="searchItem()"></tr>
        </td>
    </table><br>
    <table>
        <tr>
            <td>Employee ID</td>
            <td>Asset Serial Number</td>
        </tr>
        <tr>
            <td><input type="text" name="empID"></td> 
            <td><input type="text" name="srlID"></td>
        </tr>
        <tr>
            <td align="right"><input type="button" name="assign" value="Assign" onClick="assignItem()"></td>
        </tr>
    </table><br>
</div>
<div id="section2"></div>

JAVASCRIPT

function searchItem()
{   
    var xhr;  
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();  
    } 
    else if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }  
    var data = "asid=" + document.getElementById("sidt").value;
    xhr.open("POST", "page.php", true);   
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");              
    xhr.send(data);  
    xhr.onreadystatechange = display_data; 
    function display_data() 
    {  
        if (xhr.readyState == 4) 
        { 
            if (xhr.status == 200) 
            {       
                document.getElementById("section2").innerHTML = xhr.responseText;
            } 
            else 
            { 
                alert('There was a problem with the request.');  
            }  
        }  
    }  
}
function assignItem(){}

PAGE.PHP

<?PHP
session_start();
$dbHost     = "localhost";
$dbUser     = "root"; 
$dbPass     = "password";
$dbDatabase = "awsims";
$db         = new PDO("mysql:dbname=$dbDatabase;host=$dbHost;port=3306", $dbUser, $dbPass); 
if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {
  $startrow = 0;
} else {
  $startrow = (int)$_GET['startrow'];
}
$sql = $db->prepare("SELECT * FROM assets LIMIT $startrow, 16");
$sql->execute();
$fetch = $sql->rowCount();
$num=$fetch;
if($num>0)
{
    echo "<table style='width: 100%' border='1'>";
    echo "<tr><td>ID</td><td>Drug</td><td>quantity</td></tr>";
    for($i=0;$i<$num;$i++)
    {
        $row = $sql->fetch(PDO::FETCH_ASSOC);
        $a = $row['SerialNumber'];
        $b = $row['AssetType'];
        $c = $row['AssetSubType'];
        echo "<tr>";
        echo "<td>$a</td>";
        echo "<td>$b</td>";
        echo "<td>$c</td>";
        echo "</tr>";
    }
    echo "</table>";
}
echo '<a href='.$_SERVER['PHP_SELF'].'?startrow='.($startrow+16).'>Next</a>';
$prev = $startrow - 16;
        //if ($prev >= 0)
echo '<a href='.$_SERVER['PHP_SELF'].'?startrow='.$prev.'>Previous</a>';
?>

【问题讨论】:

  • 到底是什么问题?链接将您带到新页面或其他内容的事实?寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误必要的最短代码 在问题本身中重现它。没有明确的问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.
  • 当我单击“下一步”时,不得显示 page.php。 main.php 中的表应该刷新。
  • 这个问题有点太笼统了,但是你要找的技术叫做AJAX。搜索它,阅读一两个教程,如果遇到困难,请返回这里。
  • 我已经试过了。我的问题是,在单击按钮时,我能够检索所有数据,一旦检索的行数
  • 您需要为您的链接编写一个事件处理程序,而不是使用href 属性。发生页面更改是因为单击链接会将用户发送到href 属性中指定的 URL。您需要拦截该点击,禁用默认事件(导航),并使用 AJAX 获取结果。

标签: javascript php html mysql pagination


【解决方案1】:

这是我读过的最简单最聪明的PHP MySQL Pagination 示例!解释得很好,并提供了完整的代码,经过测试并且可以 100% 运行。

【讨论】:

  • 链接已损坏。
【解决方案2】:

尝试将您的 sql 语句更改为以下查询。

$sql = $db->prepare("SELECT * FROM assets LIMIT 16 OFFSET $startrow");

下一个和上一个链接代码应该如下所示。

echo '<a href='.$_SERVER['PHP_SELF'].'?startrow='.($startrow+1).'>Next</a>';
$prev = $startrow - 1;
echo '<a href='.$_SERVER['PHP_SELF'].'?startrow='.$prev.'>Previous</a>';

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 2018-09-22
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2011-02-06
    • 2013-05-25
    • 2018-01-12
    • 2011-04-14
    相关资源
    最近更新 更多