鉴于我的PHP代码每页获得1条记录。但是,即使我在网址中传递了不同的操作值,我也会得到相同的信息?为什么会这样 ?
<?php
if(!isset($_GET['action']))
$_GET['action'] = 'view';
switch($_GET['action']){
case 'prev':
$q = "SELECT * FROM table2 WHERE id='aamir' ORDER BY id DESC " ;
echo "prev";
break;
case 'next':
$q = "SELECT * FROM table2 WHERE id='aamir' ORDER BY id ASC " ;
echo "next";
break;
case 'view':
$q = "SELECT * FROM table2 WHERE id='aamir'"; echo "view";
break;
default:
throw new \Exception('Illegal action value');
}
$result1=mysql_query($q,$con);
if (!($result1) )
{
die('Error: ' . mysql_error($con));
}
else
{
$values1= mysql_fetch_array($result1);
}
echo $values1['srno'];
mysql_close($con); ?>
例如action = prev必须显示第11条记录,action = next必须显示第13条记录。当前记录为12条。
答案 0 :(得分:1)
您需要在视图页面请求中包含“当前记录ID”。
您的网址应该类似于page.php?record=12
。然后查询需要查找引用的记录:
<强> PHP 强>
$q = "SELECT * FROM table2 WHERE id='aamir' AND record_id='".$_GET['record']."'";
显然你也需要逃避变量。
您的next
和previous
链接将包含下一个和上一个记录的相关ID(如果可用),从而消除了使用案例的需要,因为所有内容都将由“默认”VIEW案例。
答案 1 :(得分:0)
您可以为每个查询添加限制语法 例如:
case 'prev':
$q = "SELECT * FROM table2 WHERE id='aamir' ORDER BY id DESC LIMIT currentpage-1, currentpage, " ;
echo "prev";
break;
case 'next':
$q = "SELECT * FROM table2 WHERE id='aamir' ORDER BY id ASC LIMIT currentpage, currentpage+1 " ;
echo "next";
break;
case 'view':
$q = "SELECT * FROM table2 WHERE id='aamir' LIMIT currentpage, currentpage ""; echo "view";
break;