PDA

View Full Version : صفحه بندی لیست نتابج جستجو



dddd10
چهارشنبه 13 مرداد 1395, 16:56 عصر
سلام
در صفحه مربوطه ، اطلاعات و نتایج جستجو باهم قرار میگیرند. نمایش اطلاعات صفحه بندی شدن و مشکلی ندارم ولی وقتی متنی جستجو میکنم میخوام نتابجش صفحه بندی بشن. کد زیر مشکل داره لطفا کمک کنید.
http://codepaste.net/wmaug7

mehdi4467
شنبه 16 مرداد 1395, 22:01 عصر
سلام
در صفحه مربوطه ، اطلاعات و نتایج جستجو باهم قرار میگیرند. نمایش اطلاعات صفحه بندی شدن و مشکلی ندارم ولی وقتی متنی جستجو میکنم میخوام نتابجش صفحه بندی بشن. کد زیر مشکل داره لطفا کمک کنید.
http://codepaste.net/wmaug7


ابتدا کد زیر را در فایلی به نام pagination.php ذخیره کنید:



<?php
class pagination{

private $all = 0;
private $range = 10;
private $inpage = 0;
private $url= '';
private $after_url = '';
private $limit = null;


function __construct($conf=null)
{
if(!is_array($conf))
return '';

if(isset($conf['all']) && !empty($conf['all']))
$this->all = $conf['all'];

if(isset($conf['range']) && !empty($conf['range']))
$this->range = $conf['range'];

if(isset($conf['inpage']) && !empty($conf['inpage']))
$this->inpage = $conf['inpage'];

if(isset($conf['url']) && !empty($conf['url']))
$this->url = $conf['url'];

if(isset($conf['after_url']) && !empty($conf['after_url']))
$this->after_url = $conf['after_url'];

if(isset($conf['limit']) && !empty($conf['limit']))
$this->limit = $conf['limit'];
}

private function inpage($i,$inpage)
{
if($i==$inpage)
return ' class="inpage"';
return '';
}


private function is_zoj($int=1)
{
if($int%2 ==0)
return true;
return false;
}


public function pagenumber()
{
$inpage = $this->inpage;
$limit =$this->limit;
$maxitem = ceil($this->all/$this->range);
$last_end = $maxitem - $limit;
$i = $fir_out = $sec_out = 0;

// start of pagenumber
$out="\n<ul class='pagenumber'>\n";
if(1<$inpage )
$out.='<li><a href="'.$this->url.'1'.$this->after_url.'" target="_self" rel="nofllow" >نخست</a></li>'."\n".'<li><a href="'.$this->url.($inpage-1).$this->after_url.'" target="_self" rel="nofllow" >قبلی</a></li>'."\n";

//loop of pagenumber
while ($i<$maxitem)
{
$i++;
if($limit === null or ($i<=$limit) or ($i>$last_end) or ($i==$inpage) or ($i> $inpage-ceil(($limit)/2) and $i < $inpage+ceil(($limit)/2)) or ($this->is_zoj($limit) and $i>= $inpage-ceil(($limit)/2) and $i < $inpage+ceil(($limit)/2)) )
$out.='<li'.$this->inpage($i,$inpage).'><a href="'.$this->url.$i.$this->after_url.'" target="_self" rel="nofllow" >'.$i.'</a></li>'."\n";
elseif($i>$limit && ((!$this->is_zoj($limit) and $i<$inpage-(($limit)/2) ) or ($this->is_zoj($limit) and $i<$inpage-($limit/2)) ))
$fir_out++;
elseif($i<=$maxitem-$limit &&( (!$this->is_zoj($limit) and $i>$inpage-(($limit-1)/2)) or ($this->is_zoj($limit) and $i>$inpage+($limit/2)-1) ))
$sec_out++;
else
continue;

//show doted
if($fir_out ===1 and ( (!$this->is_zoj($limit) and $i<$inpage-(($limit)/2)) or ($this->is_zoj($limit) and $i<$inpage-($limit/2)) ) )
$out.='<li class="dotedli">...</li>';
elseif($sec_out===1 &&( (!$this->is_zoj($limit) and $i>$inpage-(($limit-1)/2) ) or ($this->is_zoj($limit) and $i>$inpage+($limit/2)-1) ) && $i<$maxitem-$limit+1)
$out.='<li class="dotedli">...</li>';
else
continue;

}
// end of pagenumber
if($maxitem>$inpage )
$out.='<li><a href="'.$this->url.($inpage+1).$this->after_url.'" target="_self" rel="nofllow" >بعدی</a></li>'."\n".'<li><a href="'.$this->url.$i.$this->after_url.'" target="_self" rel="nofllow" >آخرین</a></li>'."\n";

$out.="</ul>\n<div style='clear:both'></div>";
if($i===1)
return '';
return $out;
}


function __destruct()
{
// end
}
}





حالا در صفحه ای که می خواهید عملیات را انجام بدهید کد های زیر را وارد کنید:




<style>
.pagenumber li{
float:right;
display:inline-block;
margin:2px 1px 1px 2px;
background:white;
border:1px solid #D8CAAF
}
.pagenumber li:hover{
background:#FFE0A8;
}
.pagenumber a{
display:inline-block;
padding-top:2px;
padding-bottom:2px;
padding-right:6px;
padding-left:6px;
text-decoration:none;
font-size:8pt;
}

li.inpage{
background:#E6DCCA;
}

.pagenumber .dotedli{
border:none;
background:white
}
.pagenumber .dotedli:hover{
border:none;
background:white
}
</style>





<?php

include "pagination.php";


$pageconf = array(
'all'=>$cnt ,
'range'=>$ipp ,
'inpage'=>$page,
'limit'=>5 ,
'url'=>'index.php?page='
);

while($result)
{
$r++;
if($r > $page*$ipp) break;
if($r <= $page*$ipp and $r >= $page*$ipp-$ipp+1)
{
// place your code hear
}
}
$pagenumber = new pagination($pageconf);
echo $pagenumber->pagenumber();
?>



در کد بالا :
cnt$ : تعداد کل نتایج است.
ipp$ : تعداد نتایج در هر صفحه است.
page$ : صفحه فعلی است.
با دو خط آخر هم صفحه بندی نمایش داده می شود.

عکس پیوست را هم ببینید:

141893