【问题标题】:How to update sql query with jquery如何使用 jquery 更新 sql 查询
【发布时间】:2011-01-24 07:01:40
【问题描述】:

我仍在尝试更动态地更新我的 sql 查询,但发现这很困难,因为我对 PHP 和 jquery 都是新手。

我有一个主页 (pagination.php),如下所示:

<?php
function generate_pagination($sql) {
  include_once('config.php');
  $per_page = 3;

  //Calculating no of pages
    $result = mysql_query($sql);
    $count = mysql_fetch_row($result);
    $pages = ceil($count[0]/$per_page);

  //Pagination Numbers
  for($i=1; $i<=$pages; $i++)
  {
    echo '<li class="page_numbers" id="'.$i.'">'.$i.'</li>';
  }
}
?>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery_pagination.js"></script>

<div id="loading" ></div>
<div id="content" data-page="1"></div>
<ul id="pagination">


<?php generate_pagination("SELECT COUNT(*) FROM explore WHERE category='marketing'"); ?>


<a href="#" class="category" id="marketing">Marketing</a>

<a href="#" class="category" id="automotive">Automotive</a>

<a href="#" class="category" id="sports">Sports</a>

如您所见,脚本的顶部正在计算分页的页数,然后根据该查询在数据库中的结果数显示数字:

<?php generate_pagination("SELECT COUNT(*) FROM explore WHERE category='marketing'");

如果我遇到困难,我想让上述查询的类别部分更加动态。因此,当用户单击三个链接中的任何一个时,我希望将单击的链接的 id 放置在使用 jquery 查询的类别部分中。

这是我的 jquery 代码:

$("#pagination a").click(function () {

    Display_Load();

    var this_id = $(this).attr('id');
    var pageNum = $('#content').attr('data-page');
    $("#content").load("filter_marketing.php?page=" + pageNum +'&id='+this_id, Hide_Load());    
});

我希望这是有道理的,如果有人能在这方面帮助我,那就太好了。

【问题讨论】:

  • fyi,通过查看代码,您在调用 generate_pagination 后忘记关闭
  • 真的是一团糟,不打算给你重写,而是像 $id = mysql_real_escape($_POST['id']); generate_pagination("SELECT COUNT(*) FROM explore WHERE category='$id'");可能会让你开始。 (您需要 mysql_real_escape 否则您将面临 SQL 注入的风险)

标签: php jquery mysql


【解决方案1】:

我认为有两件事需要改变。首先,GET "id" 变量需要在你的 sql 语句中,见如下:

<?php generate_pagination("SELECT COUNT(*) FROM explore WHERE category='".mysql_real_escape($_GET['id'])."'"); ?>

另外一点是,当你加载新的内容时,你还需要根据新的内容信息来改变分页。这将需要 (1) 另一个脚本(如 pagination_links.php)或 (2) 调整分页脚本以仅返回 generate_pagination 函数的内容。

除了这两件事之外,它应该在概念上起作用。凌乱......但它应该工作。

【讨论】:

  • 第 2 部分是我需要帮助的地方。
  • 我会推荐另一个脚本,并将其作为 generate_pagination 代码(而不是创建函数)。然后在你的 javascript 中在你的 $(#content).load() 之后添加另一个 $.load() 行以加载到你的#pagination div,如下所示: $("#pagination").load('pagination_links.php? page=' + pageNum +'&id='+this_id)
【解决方案2】:

请记住,如果它是一个外部站点,则在执行此操作时需要小心。如果您正在使用 JS 构建 SQL 查询,那么除非您在后端进行一些检查,否则有人非常容易进行 SQL 注入。我的建议是只传递某些参数并使用 PHP 来构建查询本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2014-07-27
    • 2020-09-28
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多