首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将筛选按钮添加到此分页?

问如何将筛选按钮添加到此分页?
EN

Stack Overflow用户
提问于 2010-04-26 10:06:25
回答 2查看 427关注 0票数 0

嘿,我想添加一个按钮(链接),当点击时将过滤分页结果。

我是php (和一般编程)的新手,我想添加一个像'Automotive‘这样的按钮,当点击它时,它会更新我的分页脚本中的两个mysql查询,如下所示:

正如您所看到的,类别automotive是硬编码的,我希望它是动态的,所以当单击一个链接时,它会将id或class放在查询的类别部分中。

1:

代码语言:javascript
复制
$record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='automotive'"));

2:

代码语言:javascript
复制
$get = mysql_query("SELECT * FROM explore WHERE category='automotive' LIMIT $start, $per_page");

这是我正在使用的整个php分页脚本:

代码语言:javascript
复制
<?php

    //connecting to the database
    $error = "Could not connect to the database";
    mysql_connect('localhost','root','root') or die($error);
    mysql_select_db('ajax_demo') or die($error);

    //max displayed per page
    $per_page = 2;

    //get start variable
    $start = $_GET['start'];

    //count records
    $record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='automotive'"));

    //count max pages
    $max_pages = $record_count / $per_page; //may come out as decimal

    if (!$start)
       $start = 0;

    //display data
    $get = mysql_query("SELECT * FROM explore WHERE category='automotive' LIMIT $start, $per_page");
    while ($row = mysql_fetch_assoc($get))
    {
     // get data
     $name = $row['id'];
     $age = $row['site_name'];

     echo $name." (".$age.")<br />";

    }

    //setup prev and next variables
    $prev = $start - $per_page;
    $next = $start + $per_page;

    //show prev button
    if (!($start<=0))
           echo "<a href='pagi_test.php?start=$prev'>Prev</a> ";

    //show page numbers

    //set variable for first page
    $i=1;

    for ($x=0;$x<$record_count;$x=$x+$per_page)
    {
     if ($start!=$x)
        echo " <a href='pagi_test.php?start=$x'>$i</a> ";
     else
        echo " <a href='pagi_test.php?start=$x'><b>$i</b></a> ";
     $i++;
    }

    //show next button
    if (!($start>=$record_count-$per_page))
           echo " <a href='pagi_test.php?start=$next'>Next</a>";

    ?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-26 10:20:05

包含2个链接/类别的示例:

代码语言:javascript
复制
<a href='script.php?category=automotive'>automotive</a> <a href='script.php?category=sports'>sports</a>

Script.php内部:

代码语言:javascript
复制
$category = mysql_real_escape_string($_GET['category']);
$record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='$category'"));
...
$get = mysql_query("SELECT * FROM explore WHERE category='$category' LIMIT $start, $per_page");
票数 0
EN

Stack Overflow用户

发布于 2010-04-26 11:06:44

编辑:我只是发布了这个答案,以回应OP声明他是编程新手。良好的卫生习惯在一开始很容易学会,然后养成习惯,或者很久以后,很难养成习惯。

http://us2.php.net/manual/en/security.database.sql-injection.php

请同时阅读这篇关于数据库安全性的文章。把你的查询写成:

代码语言:javascript
复制
$start = mysql_real_escape_string($_GET['start']);
settype($start, 'integer');
$category = mysql_real_escape_string($_GET['category']);
$record_count = mysql_num_rows(mysql_query("SELECT * FROM explore WHERE category='%s'", $category));
...
$get = mysql_query("SELECT * FROM explore WHERE category='%s' LIMIT %d, %d", $category, $start, $per_page);

编写额外的安全代码总是值得的,即使只是为了实践。数据库的基本安全规则是:永远不要相信用户输入,始终检查生成的输出。由于输入来自查询字符串,并针对数据库运行,因此必须对其进行过滤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2710740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档