【问题标题】:Retrieve data from Database with AJAX and paginate them without a framework使用 AJAX 从数据库中检索数据并在没有框架的情况下对它们进行分页
【发布时间】:2013-09-20 18:02:17
【问题描述】:

我正在为 Web 技术课程做一个项目。我想使用 AJAX 请求从数据库中检索一些数据,然后对它们进行分页。 数据已使用此脚本过滤:

function applyFilter( str, id)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("ajax_content").innerHTML=xmlhttp.responseText;
        }
}
xmlhttp.open("GET","filter_script.php?value='"+str+"'&filter="+id,true);
xmlhttp.send();
}

这是 filter_script.php :

<?php
    $value = $_GET['value'];
    $filter = $_GET['filter'];

    //Ζητούμε από τον server το global_var αρχείο
    require_once("global_var.php");

    //Συνδεόμαστε στη Βάση δεδομένων
    $dbc = mysqli_connect(HOST, USER, PASS, DB_NAME)
        or die("Error in connecting with Databse");

    //Δημιουργούμε το κατάλληλο query. Εδώ χρειαζόμαστε
    //να πάρουμε τη λίστα με τις παραγγελίες από τη Βάση
    $query = "select date, service, price, product from orders WHERE $filter = $value  ORDER BY date DESC";

    //Αποθηκεύουμε τα αποτελέσματα από τη Βάση
    $result = mysqli_query($dbc, $query)
        or die("Error in querying the Databse");

    //Δημιουργούμε το header του πίνακα με τις παραγγελίες
    echo '<table id="orders">';
    echo    '<tr class="header">';
    echo        '<td>Date</td>';
    echo        '<td>Service</td>';
    echo        '<td>Price</td>';
    echo        '<td>Product</td>';
    echo    '</tr>';

    //Εμφανίζουμε τις παραγγελίες σε μορφή πίνακα.
    while ($row = mysqli_fetch_array($result)) {
        echo    "<tr>";
        echo        '<td class="date">'.$row['date'].'</td>';
        echo        '<td class="service">'.$row['service'].'</td>';
        echo        '<td class="price">'.$row['price'].'</td>';
        echo        '<td class="product">'.$row['product'].'</td>';
        echo    "</tr>";
    }

    echo '</table>';

    //ΚΛείνουμε τη σύνδεση με τη βάση δεδομένων
    mysqli_close($dbc);
    ?>

cmets 是希腊语,所以请忽略它们。

所以我想要一种在每次 AJAX 从数据库中检索新数据时对这些数据进行分页的方法。 请帮忙,因为我找不到办法。

提前致谢。

【问题讨论】:

  • 您可以使用limit 和您的order by 来抓取您的部分数据...link
  • @gloomy.penguin 是的,我从一开始就想到了这一点,但我遇到了一个问题。如果你能帮助我,在这方面你很棒。例如,如何查看第 2 页的结果。
  • 看看limit 的表现如何:sqlfiddle.com/#!2/7bcc50/6/0

标签: javascript php sql ajax


【解决方案1】:

看看: Server side paging in SQL Server

在您的 AJAX 请求中包含另一个参数(例如 start)并在 BETWEEN 节点中使用它。

xmlhttp.open("GET","filter_script.php?value='"+str+"'&filter="+id+"&start="+start,true);

在现实世界中,您将使用一些框架,例如 jQuery 或 Prototype。这使得 AJAX 的使用更简单。还可以考虑使用 JSON 响应,这样您就不必为将来的任何 UI 级别更改而不断更改 PHP。在大多数情况下,任何服务器端脚本都应该只包含您的主要应用程序逻辑。不要在那里混淆 HTML。我不太喜欢 PHP,但这里有一些你可能会觉得有趣的东西:http://www.php.net/manual/en/function.json-encode.php

祝你好运。

【讨论】:

  • 我不使用框架,因为它是一个项目。所以我的老师想自己做这一切。我会试试看。我的问题仍然是我不知道如何更新开始变量,例如每次我点击下一页时。但是谢谢你的回答。 :)
猜你喜欢
  • 2017-01-27
  • 2013-12-04
  • 2011-12-04
  • 2015-09-24
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多