如何根据按钮单击移动下一个和上一个

时间:2012-06-13 11:11:44

标签: 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_close 行,因为我认为如果关闭数据库连接,我将无法移动下一个和上一个。如果我错了,请纠正我,因为我是php和mysql的新手。

我实际上是在尝试使用mysqli,因为在我的其他帖子上有人说它已被弃用但是当我使用mysqli时我的代码会变得混乱所以现在我想用mysql完成我的项目并在我有机会时转移到mysqli回顾mysqli文档。

现在回到问题,上面的函数通过表单提交按钮调用。我实际上有3个按钮。 Go,Prev,Next。 Go按钮充当提交按钮,使内容正常。

我现在的目标是能够使用prev和next按钮从数据库的当前行移动上一个和下一个。

知道怎么做吗?

最后,我应该在哪里正确调用mysql_close()函数?

由于

4 个答案:

答案 0 :(得分:0)

如果您想要一个固定列表向前/向后移动,您可以将$result变量移动到会话并使用它来移动。

但是,如果您想要点击此实时数据,则无效/

答案 1 :(得分:0)

你不需要调用mysql_close()因为php现在就这样做。在这种情况下可以这样做,因为每次调用脚本时都会创建mysql连接。

在这种情况下,您需要读取数据库中上一个和下一个条目的ID,并将下一个和上一个按钮的路径设置为此ID。

答案 2 :(得分:0)

因为你想要的是从数据库表中分页内容(记录) 那么最好的方法是使用SQL start和limit结构。

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)

了解这一点,您必须跟踪当前使用的起始索引,以便了解如何提取NEXTPREVIOUS页面

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

请注意,对<a></a>buttons链接使用NEXT代码而不是PREVIOUS可能更好。
我还有一个小脚本来处理这个可用的分页事件on github
查看documentation wiki
希望这可以帮助你

答案 3 :(得分:0)

使用限制来制作分页:

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的第一个值是开始,第二个值是结果的数量,在你的代码中你必须给它一个页码而不是'start'号。

示例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)