2012-06-13 59 views
0

我连接并使用此功能如何基于按钮旁边和以前的移动点击

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按钮用作获取内容的提交按钮。

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

任何想法,该怎么办呢?

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

感谢

回答

0

如果你想有一个固定的列表中移动前进/后退通过你可以在$result变量移到了会议,并用它来移动通过。

但是,如果通过这个点击是行不通/

0

你不需要调用mysql_close(),因为PHP现在做到这一点,当你想实时数据。在这种情况下可以这样做,因为每次调用脚本时都会创建mysql连接。

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

+0

其实我有IDS准备来回移动使用'the_id - 1'。我不知道如何从prev和next按钮调用它。 – Wayne

+0

@CharlesWayne你为什么不能这样做? '”value =“next”> 并获得与$ _GET ['the_id']的ID? – iMx

+0

我可以使用按钮点击myscript.php并仍然在我的主页上得到结果吗? – Wayne

0

因为你想要的是从你的数据库表分页的内容(记录)。
那么最好的办法是使用像这样的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) 

认识到这一点,你必须跟踪当前使用的开始索引,以便知道如何拉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代替NEXTPREVIOUS链接。
我也有一个小的脚本处理提供on github
退房的documentation wiki
希望这有助于你

+0

我的Where子句总是= 1,意思是它只捕获1行,那就是当前。如果我要应用你所问的方法。我需要限制它从目前的向后移动30和从目前的向前移动30。从你的代码的外观来看,它假设我的结果超过1,并且它将限制为25.即使我只从where子句中得到1个结果,它也能工作吗?谢谢 – Wayne

+0

我要把放到下一个还是上一个?我读过你的剧本,但这似乎超出了我的联盟。你能告诉我哪个部分可以制作上一个和下一个链接。我一次只需要1行显示。每页显示1行。谢谢 – Wayne

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) 

,其中的第一个值限制是开始,第二个是结果的数量,在你的代码中你必须给它页码而不是'开始'号码。

例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) 
+0

会不会减慢我的结果?对不起,我忘了提及。我的表格包含31300+行。我使用where子句只获取特定行并使其更快。然而,我的where子句非常具体,因为我只需要每页显示一行。我正在查看将与当前匹配我的where子句的记录相抵消的内容。如果你可以确认它不会减慢我的结果,因为我有31300 + rown,我会尝试它。谢谢 – Wayne

+0

'限制'总是会返回快速查询,您可以试试,请记住使用'where'条件和' – jcho360

+0

'的顺序让我们假设我成功地查询限制。我如何从一行导航到另一行。我一次只需要在我的页面上显示一次。谢谢 – Wayne

相关问题