Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: PHP - разделение страниц [4]
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (4): « 1 2 3 [4]   

> Описание: разделение страниц (код)
Lonely wanderer
Отправлено: 21 Ноября, 2007 - 17:41:20
Post Id


Newbie


Покинул форум
Сообщений всего: 23
Дата рег-ции: Нояб. 2007  

Карма 0




Народ! Помогите чайнику!

Есть вот такой код:
Который выводит на страницу таблицу в 4 колонки и 4 ряда.
Всё замечательно работает. Может только что не так поставил Радость
CODE:
<?php
$def=array('page' =>1, 'num' => 4, 'set' => 4);

$f = fopen("baze.txt", 'r');
if(isset($_GET['total']))
$total = intval($_GET['total']);
else
{
for($i = 0; !feof($f); $i++) $s = fgets($f); rewind($f);
$total = $i - (trim($s) == "");
}
foreach($def as $k => $v)
$$k = isset($_GET[$k])&& $_GET[$k] > 0 ? $_GET[$k]: $v;

$page_i = 1;
for($lines = 0; $lines < $total; $page_i++)
{
$lines += $num * $set;
if($page_i == $page);
}


?>
<table><tr>
<?php

if($page >= $page_i)
$page = $page_i-1;
$lines_start = ($page-1) * $num * $set;

for($i = 0; !feof($f) && $i < $lines_start; $i++) fgets($f);

for($j = 0 ; !feof($f) && $j < $num; $j++)

{
echo '</tr><tr>';
for($i = 0 ; !feof($f) && $i < $set; $i++)
echo fgets($f)."\r\n";
}

?>
</tr></table>

<?php

$page_i = 1;
for($lines = 0; $lines < $total; $page_i++)
{
$lines += $num * $set;
if($page_i == $page)
echo "$page_i\r\n";
else
echo "<a href=?total=$total&num=$num&set=$set&page=$page_i>"
.$page_i. "</a>\r\n";
}
?>


Проблема в том что страницы выводятся в бесконечный ряд:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 .....

Помогите сделать вот такую вот нумерацию:
Страниц ( 75 ) Первая « ... 3, 4, 5, 6, 7, 8, 9 ... » Последняя
как тут: http://tvoyweb.ru/example/paginator/index.php

(Отредактировано автором: 21 Ноября, 2007 - 17:43:41)

 
 Top
Alone
Отправлено: 22 Ноября, 2007 - 01:02:02
Post Id



Super Member


Покинул форум
Сообщений всего: 2393
Дата рег-ции: Дек. 2004  

Карма 8




Теоретически могу сказать что нужно работать с вот этой частью кода:
CODE:
for($lines = 0; $lines < $total; $page_i++)

Здесь http://tvoyweb.ru/example/paginator/index.php даётся разделение на вывод. Т.е. всегда конкретно указывается откуда и до куда выводить.
Это видно здесь:
Цитата:
for ($i=$start_links;$i<=$finish_links;$i++){
$start = ($i-1)*$per+1;
$finish = ($i==$tw_pages) ? $total:$i*$per;
$page = ($mode === FALSE) ? '['.$start.' - '.$finish.']':$i;
$pagesarray[] = ($i != $tw_cur)?'<a href="'.$get.'&p='.$i.'">'.$page.'</a>':$page;

}
А практически не знаю... сложнова-то Улыбка
 
 Top
Antares
Отправлено: 25 Ноября, 2007 - 03:00:56
Post Id



Чекист


Покинул форум
Сообщений всего: 214
Дата рег-ции: Янв. 2006  
Откуда: Москва

Карма 4




решил свою версию выложить
CODE:
<?php
include("base.bd"); // типа БД
$c_line = 4; // строк
$c_img_line = 4; // ячеек в строке
$c_img_total = count($file_image);
$c_img_on_page = $c_img_line*$c_line;
$c_page = $c_img_total/$c_img_on_page;
if(($c_img_total % $c_img_on_page)>0)
{ $c_page = ($c_page+1); }
settype($c_page, "integer");
if(@$k == ""){$k = 0;}
if(@$k >= $c_img_total) {$k = $c_img_total-1;}
$start=$k*$c_img_on_page;
$index=$start;
$s=0;
while($s<$c_line) {

$j = 0;
echo "<table align = center width=100% border=1><tr align = center>";
while($j<$c_img_line) {
echo "<td width='25%'>".$file_image[$index]."</td>";
if ($index==$c_img_total-1) {
echo "</tr></table>";
break; }
$j++; $index++; }
echo "</tr></table>";

$s++;
if ($index>=$c_img_total-1) { break; }}
echo "<center>&nbsp;<b>Страниц:</b> ($c_page)&nbsp;";
$amplitude = 2;
if ($k > $amplitude) {
echo " <a href=".$_SERVER['PHP_SELF']."?k=0><u>первая</u></a> "; }
if ($k > 0) {
$pre_p = $k - 1;
echo " <a href=".$_SERVER['PHP_SELF']."?k=".$pre_p."><u><<</u></a> "; }
for ($counter=$k-$amplitude+1; $counter<=$k+$amplitude+1; $counter++) {
if ($counter > 0 && $counter < $c_page+1) {
if (($counter-1)==$k) {
echo " <a style=\"color: Silver;\"> [".$counter."]</a> "; }
else {
$counterh=$counter-1;
echo "<a href=".$_SERVER['PHP_SELF']."?k=".$counterh."><u>".$counter."</u> </a>"; }
echo " "; } }
if (($k + 1)<($c_page)) {
$next_p = $k + 1;
echo " <a href=".$_SERVER['PHP_SELF']."?k=".$next_p."><u>>></u></a>"; }
if (($k + $amplitude + 1) < $c_page) {
$finish = $c_page - 1;
echo " <a href=".$_SERVER['PHP_SELF']."?k=$finish><u>последняя</u></a> "; }
?>

формат base.bd:
CODE:
<?php
$file_image[] = "картинка 1";
$file_image[] = "картинка 2";
$file_image[] = "картинка 3";
...
$file_image[] = "картинка n";
?>
 
 Top
Vladimir
Отправлено: 05 Февраля, 2008 - 03:52:27
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




CODE:
<?
$topage=10;//количество записей на страницу
$page=$_GET['p'];
if(!$page){$page=0;}
$from=$page*$topage;
$to=$from+$topage;
$posts=file("base.txt");//файл-база,там хранится все, что нужно вывести
$posts=array_reverse($posts);
$kolvo=count($posts);
for($i=$from; $i<$to; $i++){
if($posts[$i]){
echo $posts[$i]."<BR>";//здесь меняете как хотите,это-вид каждой строки
}
}
$pages=ceil($kolvo/$topage);
for ($i=0; $i<$pages; $i++){
if ($i!=$page) echo "<a href='".$PHP_SELF."?p=".$i."'> ".($i+1)." </a>";
else echo $i+1;
}
?>

Если здесь убрать
CODE:
$posts=array_reverse($posts);
, то скрипт будет выдавать инфу из базы данных сверху вниз, как и есть в тексте.

Можно ли так сделать, чтобы скрипт выводил определённый интервал из базы (например, от 100-й строки до 200-й, с распределением по страницам, разумеется)?
 
 Top
Furax
Отправлено: 06 Февраля, 2008 - 06:14:57
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




CODE:
$posts=array_slice($posts, 100, 100);
 
 Top
Vladimir
Отправлено: 08 Февраля, 2008 - 04:54:59
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




А можно ли обратить выводимую скриптом информацию в одну переменную?
(что-то типа $content= "информация";)
Всё вместе одной переменной - и текст из базы данных и список страниц внизу.
 
 Top
Furax
Отправлено: 08 Февраля, 2008 - 06:13:03
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




В начале скрипта добавляешь
CODE:
$text='';
Все вхождения "echo ..." заменяешь на "$text.= ...".
 
 Top
Vladimir
Отправлено: 08 Февраля, 2008 - 08:59:24
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




Спасибо.
А как сделать, чтобы между выводимой из базы инфой и списком страниц был разделитель (<br>, <hr>, надпись и т.д.)?
 
 Top
Furax
Отправлено: 08 Февраля, 2008 - 23:59:10
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




После
CODE:
$pages=ceil($kolvo/$topage);
пишешь
CODE:
$text.='<hr>';
 
 Top
Vladimir
Отправлено: 09 Февраля, 2008 - 04:06:10
Post Id


Advanced Member


Покинул форум
Сообщений всего: 270
Дата рег-ции: Апр. 2005  

Карма 0




Спасибо!
 
 Top
Страниц (4): « 1 2 3 [4]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0372]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33