[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: постраничная навигация
NoCash
дорого времени суток) есть такая проблемка навигация работае правильно посчитывает страницы и правильно их выводит но вот проблемма в том что на самую первую страницу перейти не дает почему то она не активная
например
1 | 2 | 3
где 2 и 3 подсвечиваются а 1 нет
на 2 и 3 нажать можноо а на 1 нельзя не хотит.
вот какой код использую

// метод строит панель постраничной навигации
function makePageNavBar(){
$query = mysql_query($this->sql);
$maxpage = ceil(mysql_num_rows($query)/_NUM_ON_PAGE);
for($i=0;$i<$maxpage;$i++){
$ret.='<a href="?letter='.$_GET['letter'].'&page='.$i.'">' .$i. '</a> |';
}
return $ret;
}
// Метод ставит ограничения по странице
function setPage(){
$this->setOrder();
if(empty($_GET['page'])) $page=0;
else $page = $_GET['page'];
$this->sql .= " LIMIT ".$page*_NUM_ON_PAGE.",".(_NUM_ON_PAGE);
}






Спустя 26 минут, 46 секунд (5.06.2010 - 10:11) Игорь_Vasinsky написал(а):
может setPage() этим делом и занимается у тя.. пробуй убрать

Спустя 6 минут, 28 секунд (5.06.2010 - 10:18) NoCash написал(а):
пробывал. в таком случае на всех страницах отобрадается то что на первой странице отображается

Спустя 5 минут, 42 секунды (5.06.2010 - 10:24) Игорь_Vasinsky написал(а):

Спустя 3 минуты, 16 секунд (5.06.2010 - 10:27) NoCash написал(а):
проблемма в том что мне необходимо не просто постраничную навигацию нужно что бы там еще и алфавитная была, поэтому приходиться мудрить

Спустя 1 минута, 51 секунда (5.06.2010 - 10:29) Игорь_Vasinsky написал(а):
...........

получается алфавитная... которая потом постраничная?


Спустя 3 минуты, 31 секунда (5.06.2010 - 10:32) NoCash написал(а):
ну и та и другая

Спустя 30 секунд (5.06.2010 - 10:33) NoCash написал(а):
вот так вот выглядит
<? 
class
alphaPages{
// Задаём алфавит
var $ALPHA = '<b> А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Щ Ш Э Ю Я <b>';
// Инициализация объекта. Установка начальных условий списка
function alphaPages(){
$this->sql = "SELECT * FROM "._TAB_NAME;
}
// Метод выводит организации
function profile(){
$this1->sql = "SELECT * FROM "._TAB_NAME1;
$this1->sql .= " WHERE "._GNL_CAT."=".$_GET['id'];
$query1 = mysql_query($this1->sql);
$ret="<table class='fcaption' style='width:100%'><tr>
<td class='fcaption' width='25%'><b>Отдел</td>
<td class='fcaption' width=''><b>Телефон</td>
<td class='fcaption' width=''><b>E-mail</td></tr>"
;
while($r = mysql_fetch_array($query1))
{
$ret .= "<tr><td class='fcaption'>".$r[_GNL_DIVISION]."</td>
<td class='fcaption'>"
.$r[_GNL_PHONE]."</td>
<td class='fcaption'>"
.$r[_GNL_MAIL]."</td></tr>";
}
return $ret;
}
// метод строит панель алфавитной навигации
function makeAlphaNavBar(){
$sql = 'select DISTINCT(LEFT(UPPER('._FIELD_NAME.'),1)) as letter from '._TAB_NAME;
$query = mysql_query($sql);
while($r = mysql_fetch_assoc($query)){
$this->ALPHA = str_replace($r['letter'], '<a href="?letter='.$r['letter'].'">'.$r['letter'].'</a>' , $this->ALPHA);
}
return $this->ALPHA;
}
// метод строит панель постраничной навигации
function makePageNavBar(){
$query = mysql_query($this->sql);
$maxpage = ceil(mysql_num_rows($query)/_NUM_ON_PAGE);
for($i=0;$i<$maxpage;$i++){
$ret.='<a href="?letter='.$_GET['letter'].'&page='.$i.'">' .$i. '</a> |';
}
return $ret;
}
######### Набор фильтрующих список методов ##############
// Метод фильтрует список по букве

function setLetter(){
$this->sql .= " WHERE "._FIELD_NAME." like '".$_GET['letter']."%'";
}
// Метод ставит ограничения по странице
function setPage(){
$this->setOrder();
if(empty($_GET['page'])) $page=0;
else $page = $_GET['page'];
$this->sql .= " LIMIT ".$page*_NUM_ON_PAGE.",".(_NUM_ON_PAGE);
}
// метод задаёт порядок сортировки
function setOrder(){
$this->sql .= " ORDER BY "._ORDER_BY;
}
#########################################################
// метод строит итоговый список

function getList(){
$query = mysql_query($this->sql);

$ret .="<table><tr><td class='fcaption' width='25%'><b>".AB_NAME_1."</td>
<td class='fcaption' width='25%'><b>"
.AB_NAME_2."</td>
<td class='fcaption' width=''><b>"
.AB_NAME_3."</td>
<td class='fcaption' width=''><b>"
.AB_NAME_4."</td>
</tr>"
;
while($r = mysql_fetch_assoc($query)){
if ($r[_CAT_CHECK]=='yes'){
$ret .= "<tr><td class='forumheader2'><a href=?id=".$r[_ID_NAME].">".$r[_FIELD_NAME]."</a></td><td class='forumheader2'>".$r[_CITY_NAME]."</td><td class='forumheader2'>".$r[_STREET_NAME]."</td><td class='forumheader2'>".$r[_HOME_NAME]."</td></tr>";
}
}

return $ret;
}
}

// the end of class
?>

вдруг кто захочет по мудрить по эксперементировать

Спустя 17 минут, 41 секунда (5.06.2010 - 10:50) twin написал(а):
Шайтан-машина.
Всё в кучу. И ООП и какакодинг. smile.gif

Спустя 3 минуты, 59 секунд (5.06.2010 - 10:54) NoCash написал(а):
ну если где нить завалялись готовые скрипты на что то подобное можете дать ссылку срадостью посмотрю

Спустя 27 минут, 8 секунд (5.06.2010 - 11:22) twin написал(а):
Да нет, не в том дело. Нормальный классег, только как то необычно.
Обычно если используется ООП, то никак не с разметкой в классе.
Класс подразумевает по сути своей многозадачность. То есть его дОлжно можно использовать в разных местах. А тут жестко

<td class='fcaption' width='25%'><b>Отдел</td>
<td class='fcaption' width=''><b>Телефон</td>

и мама не горюй. Если он одноразовый, зачем класс то? Чтобы круто смотрелось?

И про безопасность грех забывать. Что это такое?
$this1->sql .= " WHERE "._GNL_CAT."=".$_GET['id'];

Спустя 8 минут, 29 секунд (5.06.2010 - 11:30) Игорь_Vasinsky написал(а):
я делал алфавитную навигацию... у меня всё скромнее было

допустим есть навигатор:

<a href="getpage.php?letter=a">A</a>
<a
href="getpage.php?letter=b">B</a>
<a
href="getpage.php?letter=c">C</a>


потом при переходе на getpage.php (даже с самой на себя) - я читал get и формировал запрос в базу в нужный столбец - по первой букве (у мя названия java игрушек были там) -

а вот потом по результату строил постраничную навигацию... всё просто

а для циферных значений (0-9) -

<a href="getpage.php?letter=noletter">#</a>


вот тут в запросе я ставил логику or и переберал цифры 0-9

Спустя 8 минут, 33 секунды (5.06.2010 - 11:39) Игорь_Vasinsky написал(а):
вот такая навигация

DEFINE('ITEMS_PER_PAGE', 18);

// Выбираем из БД общее количество записей

$query = "SELECT COUNT(*) FROM games WHERE $find";

$res = mysql_query( $query );

$total = mysql_result( $res, 0, 0 );

// Проверяем передан ли номер текущей страницы

if ( isset($_GET['page']) ) {

$page = (int)$_GET['page'];

if ( $page < 1 ) $page = 1;

} else {

$page = 1;

}

// Сколько всего получится страниц

$cnt_pages = ceil( $total / ITEMS_PER_PAGE );

if ( $page > $cnt_pages ) $page = $cnt_pages;

// Начальная позиция

$start = ( $page - 1 ) * ITEMS_PER_PAGE;

//$query = "SELECT * FROM jobs ORDER BY id ASC LIMIT ".$start.", ".ITEMS_PER_PAGE;

$query = "SELECT * FROM games WHERE $find ORDER BY ".$sort." LIMIT ".$start.",".ITEMS_PER_PAGE;

$res = mysql_query( $query );



//вывод данных из базы

// Строим постраничную навигацию


if ( $cnt_pages > 1 )

{

echo '<td><div style="margin:1em 0" style="font-size:11px">Страницы: ';

// Проверяем нужна ли стрелка "В начало"

if ( $page > 3 )

$startpage = '<td><div class=href>
<a class=pages href="'
.$_SERVER['PHP_SELF'].'?page=1&letter='.$letter.'">«</a>
</div><td><div class=href>...</div>'
;

else

$startpage = '';

// Проверяем нужна ли стрелка "В конец"

if ( $page < ($cnt_pages - 2) )

$endpage = '<td><div class=href>...</div>
<td><div class=href>
<a href="'
.$_SERVER['PHP_SELF'].'?page='.$cnt_pages.'&letter='.$letter.'">»</a></div>';

else

$endpage = '';



// Находим две ближайшие станицы с обоих краев, если они есть

if ( $page - 2 > 0 )

$page2left = '<td><div class=href>
<a href="'
.$_SERVER['PHP_SELF'].'?page='.($page - 2).'&letter='.$letter.'">'.($page - 2).'</a>
</div>'
;

else

$page2left = '';

if ( $page - 1 > 0 )

$page1left = '<td><div class=href>
<a href="'
.$_SERVER['PHP_SELF'].'?page='.($page - 1).'&letter='.$letter.'">'.($page - 1).'</a>
</div>'
;

else

$page1left = '';

if ( $page + 2 <= $cnt_pages )

$page2right = '<td><div class=href>
<a href="'
.$_SERVER['PHP_SELF'].'?page='.($page + 2).'&letter='.$letter.'">'.($page + 2).'</a>
</div>'
;

else

$page2right = '';

if ( $page + 1 <= $cnt_pages )

$page1right = '<td><div class=href>
<a href="'
.$_SERVER['PHP_SELF'].'?page='.($page + 1).'&letter='.$letter.'">'.($page + 1).'</a>
</div>'
;

else

$page1right = '';



// Выводим меню

echo $startpage.$page2left.$page1left.'<td><div class=href>[ <strong>'.$page.'</strong> ]</div>'.$page1right.$page2right.$endpage;



echo '</div>';

}


Спустя 4 минуты, 2 секунды (5.06.2010 - 11:43) Игорь_Vasinsky написал(а):
т.е. и все ссылки активны - и страница подсвечена

Спустя 2 минуты, 21 секунда (5.06.2010 - 11:45) NoCash написал(а):
уху все разобрался) с выводом немного накосячил) класс гуд написан)

Спустя 3 минуты, 20 секунд (5.06.2010 - 11:48) Игорь_Vasinsky написал(а):
да и прав старший кот.. зачем там те класс нужен был....

Спустя 26 минут, 9 секунд (5.06.2010 - 12:14) NoCash написал(а):
изучение не изученного думаю не повредит

Спустя 13 минут, 13 секунд (5.06.2010 - 12:28) Игорь_Vasinsky написал(а):
wink.gif тож верно...терь всё по местам встало..а то виш как..выглядит как понты...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.