Консультация № 54906
10.09.2006, 11:57
0.00 руб.
0 1 1
добрый день
у меня есть один вопрос. кажется, что не очень и трудный, но сам решить не могу.
например, страница должна вывести нескольно сотен строк. я не хочу, чтоб это было на одной странице. как сделать, чтоб на каждой странице было по 100 строк (или элементов массива) и чтоб также были линки (типа страница 1, страница 2 и так далее).
заранее благодарю :)

Обсуждение

Неизвестный
10.09.2006, 13:57
общий
это ответ
Здравствуйте, Kovpack!
Чтобы этого добиться, я использую свою ф-цию вывода количества страниц.
При загрузке страницы проверяем, нет ли параметра-get номера страниц с именем page:
$page= (@$_GET[‘page‘]) ? $_GET[‘page‘] : 1;
Если нет, то номер страницы 1.
Пусть переменная $ch - это количество строк на странице. Для вывода информации для текущей страницы можно использовать цикл for(если это список-массив):
$mas=file(‘file.txt‘);
for ($i=($page-1)*$ch;$i<=$page*$ch && $i<=count($mas) ;$i++){
print $mas[$i];
}
И в конце вызываем ф-ию write():
write(count($mas),$page,$_SERVER[‘PHP_SELF‘].‘?page=‘);
Её параметры очень простые:
$pages- общее количество страниц
$nom_str - текущая страница
$scr- адрес, к которому будет прибавлять номер страницы в ссылках. Например, $scr=‘/index.php?page=‘
$kol - количество ссылок на страницы, по-умолчанию 20.
Примерный код в приложении.

Приложение:
<?phpfunction write($pages,$nom_str,$scr,$kol=20){ if ($nom_str<1) $nom_str=1; if ($nom_str>$pages) $nom_str=$pages; if ($kol%2) $kol++;//Если нечётное $pol=intval($kol/2);//Половина if ($pages>1){//Если страниц больше 1 print "<div align=center>"; // Если вторая страница if ($nom_str==2) print "<a href=‘".$scr."1‘ title=‘В начало‘><</a>"; // Иначе, кроме 1-ой страницы elseif ($nom_str>2) print(" <a href=‘".$scr."1‘ title=‘В начало‘><<</a> <a href=‘".$scr.($nom_str-1)."‘‘ title=‘Назад‘><</a>"); //Выясняем начало $nach=($pages-$nom_str)<=$pol?$pages-$kol:$nom_str-$pol; if ($nach<1) $nach=1; //Конец $kon=$nach+$kol; for ($i=$nach;$i<=$pages && $i<=$kon;$i++){ if ($i==$nom_str) {print " <font color=‘#D2691E‘>$i</font> ";} else {print " <a href=‘".$scr."$i‘>$i</a> ";} } //Если предпосленяя страница if ($nom_str==$pages-1) print "<a href=‘".$scr.$pages."‘ title=‘В конец‘>></a>"; //Иначе, кроме последней elseif($nom_str<$pages-1) print"<a href=‘".$scr.($nom_str+1)."‘ title=‘Вперед‘>></a> <a href=‘".$scr.$pages."‘ title=‘В конец‘>>></a>"; Print "</div>"; }}$page= (@$_GET[‘page‘]) ? $_GET[‘page‘] : 1;$ch=100;$mas=file(‘ip.txt‘);for ($i=($page-1)*$ch;$i<=$page*$ch && $i<=count($mas) ;$i++){print $mas[$i].‘<BR>‘;}write(count($mas),$page,$_SERVER[‘PHP_SELF‘].‘?page=‘);?>
Форма ответа