Как сделать так, чтобы в галерее фоток, на каждой странице отображались не все ссылки с номерами страниц, а только несколько ссылок на страницы с фотками, например: 1, 2, 3, 4, 5... 11... 51... 101... Последняя »? На данный момент вывод ссылок осуществляется с помощью while, но так получается что выводится очень много ссылок, а это лишний трафф пользователя и время ожидания загрузки страниц(((
инфо о фотках забиваешь в БД потом ловишь гет-параметры, к примеру first_view и last_view mysql_query("SELECT * FROM foto LIMIT ".$_GET['first_view']." ,".$_GET['last_view'].";"); проверяешь если фотки еще остались генеришь ссылку на эту же страницу с новыми гет-параметрами
у тебя большое будущее с такой "обработкой" гет-запросов intval бы хоть поставил)) ТС, тебе нужен только пример вывода страниц или всё вместе в запросами к БД ?
Эм, я для своей гостевухи писал так: $maxNews - количество комментириев на страницу count($name) - количество комментариев ceil() - чтобы отображались все страницы, содержащие новости PHP: for($i = 1; $i <= ceil(count($name)/$maxNews); $i++) { if($_GET['page'] == $i) echo '<font color = "gray">'."$i".'</font> '; else echo "<a href = \"?page=$i\">$i </a>"; }
Писал такую функцию для себя: PHP: <?php print pagstxt(10,100); print '<br>'; print pagstxt(2,100); print '<br>'; print pagstxt(97,100); function pagstxt($page,$maxp) //$page - какая сейчас страница, $maxp - сколько всего страниц { $ptxt=''; if($maxp<=7) { for($i=1;$i<=$maxp;$i++) { if($i==$page) $adds="[ $i ]"; else $adds=$i; $k=$i-1; $ptxt.="<a href='?page=$k'>$adds</a> "; } return $ptxt; } else { if($page>3) $c1=2; else $c1=$page-1; if($page>$maxp-3) $c2=$maxp-$page; else $c2=2; for($i=$page-$c1;$i<=$page+$c2;$i++) { if($i==$page) $adds="[ $i ]"; else $adds=$i; $k=$i-1; $ptxt.="<a href='?page=$k'>$adds</a> "; } if($page>4) $ptxt="<a href='?page=0'>1</a> ... ".$ptxt; else if($page==4) $ptxt="<a href='?page=0'>1</a> ".$ptxt; $tmp=$maxp-1; if($page<$maxp-3) $ptxt.="... <a href='?page=$tmp'>$maxp</a> "; else if($page==$maxp-3) $ptxt.="<a href='?page=$tmp'>$maxp</a> "; } return $ptxt; } ?> Этот пример выведет следующие ссылки: Думаю, прикрутить это к тому, что есть, труда не составит.
угу) Код откоментировал, надеюсь разберёшься. Выдирал из своего класса, поэтому может переменные какие-то забыл, хотя вроде всё норм. PHP: <?php // Берём текущую страницу $page = !empty($_GET['page']) && is_numeric($_GET['page']) ? intval($_GET['page']) : 1; // Глубина вывода страниц $pages_deep = 4; // Сколько фоток выводить на одной странице $onpage = 10; // Запрашиваем общее кол-во фоток в БД $sql = mysql_query('SELECT COUNT(*) AS `total` FROM `photos` ORDER BY id ASC'); if($sql){ $result = mysql_fetch_assoc($sql); // Определяем на сколько страниц поместится весь контент $pages_all = intval(($result['total'] - 1) / $onpage) + 1; if(!$page || $page <= 0) $page = 1; elseif($page > $pages_all) $page = $pages_all; $start = intval($page * $onpage - $onpage); // Запрашиваем контект в соответствии с указанной страницей $explode_sql = mysql_query("SELECT * FROM `photos` ORDER BY id ASC LIMIT ".$start.", ".$onpage); if($explode_sql && mysql_num_rows($explode_sql)){ while($res = mysql_fetch_assoc($explode_sql)){ // Выводим } // Выводим навигацию по страницам // Страницы влево for($i = $pages_deep * -1; $i < 0; $i++){ if(($page + $i) <= 0) continue; elseif($page == $i) continue; else{ $pages_left[] = '<span class="pages"><a href="?page='.($page + $i).'">'.($page + $i).'</a></span>'; } } // Страницы вправо for($i = 1; $i <= $pages_deep; $i++){ if(($page + $i) > $pages_all) continue; elseif($page == $i) continue; else{ $pages_right[] = '<span class="pages"><a href="?page='.($page + $i).'">'.($page + $i).'</a></span>'; } } // Вывод ссылок на первую и предыдущую страницы if(!$page || $page == 1){ $minus = ''; $first = ''; }else{ $minus = '<span class="pages"><a href="?page='.($page - 1).'" title="Предыдущая">«</a></span>'; $first = '<span class="pages"><a href="?page=1" title="Первая страница">««</a></span>'; } // Вывод ссылок на последнюю и следующею страницу if($page == $pages_all){ $plus = ''; $last = ''; }else{ $plus = '<span class="pages"><a href="?page='.($page + 1).'" title="Следующая">»</a></span>'; $last = '<span class="pages"><a href="?page='.$pages_all.'" title="Последняя страница">»»</a></span>'; } // Если страницы не сгенерировались if(join('', array_merge($pages_left, $pages_right)) == ''){ echo ''; }else{ // Выводим echo '<span class="pages">Страница '.$page.' из '.$total.'</span>'; echo $first.$minus.join('', $pages_left); echo '<span class="pages"><b>'.$page.'</b></span>'; echo join('', $pages_right).$plus.$last; } } } ?>