Php 如何基于按钮单击移动下一个和上一个
我正在使用此函数连接和显示数据库中的值Php 如何基于按钮单击移动下一个和上一个,php,mysql,button,Php,Mysql,Button,我正在使用此函数连接和显示数据库中的值 function display_content($the_id) { $result = mysql_query("SELECT * FROM tbl_ADBTAG WHERE bcv = $the_id"); while($row = mysql_fetch_array($result)) { echo $row['content']; } //mysql_close($con); } 我评论了mysql\u
function display_content($the_id)
{
$result = mysql_query("SELECT * FROM tbl_ADBTAG WHERE bcv = $the_id");
while($row = mysql_fetch_array($result))
{
echo $row['content'];
}
//mysql_close($con);
}
我评论了mysql\u close行,因为我认为如果我关闭数据库连接,我将无法移动下一个和上一个。如果我错了,请纠正我,因为我是php和mysql新手
我实际上是在尝试使用mysqli,因为在我的另一篇文章中,有人说它不推荐使用,但当我使用mysqli时,我的代码变得乱七八糟,所以现在我想使用mysql完成我的项目,并在有机会查看mysqli文档时转到mysqli
现在回到问题上来,上面的函数是通过表单提交按钮调用的。我实际上有3个按钮。上一个,下一个。Go按钮充当submit按钮,使内容正常
我现在的目标是能够使用prev和next按钮从数据库的当前行移动previous和next
知道怎么做吗
最后,我应该在哪里正确调用mysql_close()函数
谢谢如果您希望固定列表在会话中前后移动,您可以将
$result
变量移动到会话中,并使用该变量在会话中移动
但是,如果您希望在点击时获得实时数据,则不需要调用mysql\u close(),因为php现在可以这样做。在这种情况下可以这样做,因为每次调用脚本时都会创建mysql连接
在这种情况下,您需要读取数据库中上一个和下一个条目的ID,并将下一个和上一个按钮的路径设置为此ID。因为您需要的是对数据库表中的内容(记录)进行分页。
那么最好的方法就是使用SQL开始和限制结构,就像这样
SELECT * FROM tablename WHERE .... LIMIT start_index, number_of_items
WHERE the values are described as below:
start_index: The value from which to pull the records. The first record is 0
number_of_items: The maximum number of records to SELECT. e.g. 10 (Note: Phpmyadmin uses 30)
知道了这一点,您必须跟踪当前使用的开始索引,以便知道如何拉入下一个或上一个页面
Example:
Lets assume that we want our start index variable name to be xs, we could code like so:
$start = (isset($_GET["xs"]) and intval($_GET["xs"]) >= 0)? intval($_GET["xs"]):0;
//the first time on the page -- set the default start index
$_SESSION["start_index"] = $start;
//save it anyhow you want to keep track of the current start index
$sql = "SELECT ..... LIMIT $start,25";
..... //stuff to pull your content
请注意,您最好使用
查看
希望这能帮助您使用limit进行分页:
mysql> select * from actor limit 0,5;
+----------+------------+--------------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+--------------+---------------------+
| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 |
| 3 | ED | CHASE | 2006-02-15 04:34:33 |
| 4 | JENNIFER | DAVIS | 2006-02-15 04:34:33 |
| 5 | JOHNNY | LOLLOBRIGIDA | 2006-02-15 04:34:33 |
+----------+------------+--------------+---------------------+
5 rows in set (0.00 sec)
mysql> select * from actor limit 5,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 6 | BETTE | NICHOLSON | 2006-02-15 04:34:33 |
| 7 | GRACE | MOSTEL | 2006-02-15 04:34:33 |
| 8 | MATTHEW | JOHANSSON | 2006-02-15 04:34:33 |
| 9 | JOE | SWANK | 2006-02-15 04:34:33 |
| 10 | CHRISTIAN | GABLE | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)
mysql> select * from actor limit 10,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 11 | ZERO | CAGE | 2006-02-15 04:34:33 |
| 12 | KARL | BERRY | 2006-02-15 04:34:33 |
| 13 | UMA | WOOD | 2006-02-15 04:34:33 |
| 14 | VIVIEN | BERGEN | 2006-02-15 04:34:33 |
| 15 | CUBA | OLIVIER | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)
其中limit的第一个值是起始值,第二个值是结果数,在代码中,必须为其指定页码,而不是“起始”号
例2:
mysql> select * from bank;
+------+--------+------+
| id | amount | bank |
+------+--------+------+
| 1 | 100000 | 1 |
| 2 | 256415 | 2 |
| 3 | 142535 | 1 |
| 1 | 214561 | 2 |
| 2 | 123456 | 1 |
| 1 | 987654 | 2 |
+------+--------+------+
6 rows in set (0.00 sec)
mysql> select * from bank limit 0,2;
+------+--------+------+
| id | amount | bank |
+------+--------+------+
| 1 | 100000 | 1 |
| 2 | 256415 | 2 |
+------+--------+------+
2 rows in set (0.00 sec)
mysql> select * from bank limit 2,2;
+------+--------+------+
| id | amount | bank |
+------+--------+------+
| 3 | 142535 | 1 |
| 1 | 214561 | 2 |
+------+--------+------+
2 rows in set (0.00 sec)
mysql> select * from bank limit 4,2;
+------+--------+------+
| id | amount | bank |
+------+--------+------+
| 2 | 123456 | 1 |
| 1 | 987654 | 2 |
+------+--------+------+
2 rows in set (0.00 sec)
实际上,我已经准备好使用id-1
来回移动id。我不知道如何从上一个按钮和下一个按钮调用它。@charlesween为什么你不能这样做<代码>我可以在点击按钮时使用myscript.php,但仍然可以在主页上获得结果吗?只需说,你的主页是index.php,你可以将按钮的链接设置为index.php?id=。单击后,您将切换到带有此参数的主页面,然后获取条目的id。my where子句始终=到1。这意味着它只捕获一行,这是当前的。如果我要用你要求的方法。我需要限制5月30日的逆流,30日的逆流。从代码的外观来看,它假定我的结果大于1,并且限制为25。即使我从where子句中只得到1个结果,这是否有效?谢谢,我该投什么钱来下一步和上一步呢?我看了你的剧本,但我似乎不懂。你能告诉我哪个部分可以制作上一个和下一个链接吗。我一次只需要显示一行。意思是每页1行。谢谢,这不会影响我的成绩吗?对不起,我忘了提。我的表包含31300多行。我使用where子句只获取特定行并使其更快。但是,我的where子句非常具体,因为我只需要在每页显示一行。我正在查看与我的where子句匹配的当前记录的偏移量。如果你能确认它不会减慢我的成绩,因为我有31300+罗文,我会尝试它。感谢“limit”总是返回快速查询,您可以尝试,记住使用“where”条件和“order by”让我们假设我成功地使用limit查询。如何从一行导航到另一行。我总是需要在我的页面上一次显示1行。Thanks@CharlesWayne您必须将该值传递给查询,如果按钮是next,变量是$actual+5(5是next 5 result),如果单击prev按钮,变量将是$actual-5,因此查询将收到该值以进行下一次搜索结果我的问题是这一点。在我上面的代码中,$u id不是一个连续的数字。它实际上是诗句id(bcv意味着书的章节诗句)。实际表id的字段仅为“id”。用户正在搜索韵文,这就是变量$the_id中的feed。如果我在当前是everybook的最后一个韵文时使用next($the_id+1)。下一个命令不起作用。当用户仍在搜索$the_id时,我是否有办法将'id'作为参数?谢谢