我有这个用于导航,当我切换到第2页时,它将失去& type = 假设我选择“已选中”,它显示的第一页很好,因为它是整个字符串, 但当我切换页面时,它会丢失......这是代码:
// navigation
if($_GET['start'] && is_numeric($_GET['start']))
{
$start=$_GET['start'];
$start=((int)($start/$search_count))*$search_count;
}
else $start=0;
$info['curpage']=ceil(($start+1)/$search_count);
$info['total_pages']=ceil($info['total_results_count']/$search_count);
$navigation=array();
$navigation[]='<span class="navi navi_current"> -'.$info['curpage'].'- </span>'."\n";
$inc=$dec=$start;
$tcnt=0;
for($i=0;$i<9;$i++)
{
$inc+=$search_count;
$incp=ceil(($inc+1)/$search_count);
$dec-=$search_count;
$decp=ceil(($dec+1)/$search_count);
if($inc<$info['total_results_count'])
{
array_push($navigation,'<span class="navi"> <a href="./?q='.$_GET['q'].'&start='.$inc.'"&type='.$_GET['type'].'>'.$incp.'</a> </span> '."\n");
$tcnt++;
}
if($dec>=0)
{
array_unshift($navigation,'<span class="navi"> <a href="./?q='.$_GET['q'].'&start='.$dec.'">'.$decp.'</a> </span> '."\n");
$tcnt++;
}
if($tcnt>=10) break;
}
$navigation=join("",$navigation);
// end navigation
我尝试将&amp; type ='。$ _ GET ['type']。添加到array_unshift,但它不起作用.. 任何帮助将不胜感激!感谢。
答案 0 :(得分:1)
这不在引语之内:
'&start='.$inc.'"&type='.$_GET['type'].'
应该是
'&start='.$inc.'&type='.$_GET['type'].'"
(注意双引号的位置......
答案 1 :(得分:0)
在您的代码中,您使用HTML语法完成了错误:
<a href="./?q='.$_GET['q'].'&start='.$inc.'"&type='.$_GET['type'].'>
正如你所看到的那样,"
在&type=
之前有点早到它应该在之后。你真正想做的是
<a href="./?q='.$_GET['q'].'&start='.$inc.'&type='.$_GET['type'].'">
答案 2 :(得分:0)
如果您提前构建网址可能会更容易:
$href = './?q='.urlencode($_GET['q']).'&start='.$inc.'"&type='.urlencode($_GET['type']);
array_push($navigation,'<span class="navi"> <a href="'.htmlspecialchars($href).'">'.$incp.'</a> </span> '."\n");
这样可以更轻松地为两个上下文应用正确的编码(urlencode
用于URL查询和htmlspecialchars
HTML属性值)。或者使用http_build_query
执行此操作:
$args = array('q'=>$_GET['q'], 'start'=>$inc, 'type'=>$_GET['type']);
$href = './?'.http_build_query($args, '', '&');
array_push($navigation,'<span class="navi"> <a href="'.$href.'">'.$incp.'</a> </span> '."\n");