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

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

Strict Standards: Resource ID#39 used as offset, casting to integer (39) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: PHP - разделение страниц [4]
ТвойWeb » WebMaster класс » PHP/Perl » PHP - разделение страниц

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

31. Lonely wanderer - 21 Ноября, 2007 - 17:41:20 - перейти к сообщению
Народ! Помогите чайнику!

Есть вот такой код:
Который выводит на страницу таблицу в 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
32. Alone - 22 Ноября, 2007 - 01:02:02 - перейти к сообщению
Теоретически могу сказать что нужно работать с вот этой частью кода:
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;

}
А практически не знаю... сложнова-то Улыбка
33. Antares - 25 Ноября, 2007 - 03:00:56 - перейти к сообщению
решил свою версию выложить
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";
?>
34. Vladimir - 05 Февраля, 2008 - 03:52:27 - перейти к сообщению
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-й, с распределением по страницам, разумеется)?
35. Furax - 06 Февраля, 2008 - 06:14:57 - перейти к сообщению
CODE:
$posts=array_slice($posts, 100, 100);
36. Vladimir - 08 Февраля, 2008 - 04:54:59 - перейти к сообщению
А можно ли обратить выводимую скриптом информацию в одну переменную?
(что-то типа $content= "информация";)
Всё вместе одной переменной - и текст из базы данных и список страниц внизу.
37. Furax - 08 Февраля, 2008 - 06:13:03 - перейти к сообщению
В начале скрипта добавляешь
CODE:
$text='';
Все вхождения "echo ..." заменяешь на "$text.= ...".
38. Vladimir - 08 Февраля, 2008 - 08:59:24 - перейти к сообщению
Спасибо.
А как сделать, чтобы между выводимой из базы инфой и списком страниц был разделитель (<br>, <hr>, надпись и т.д.)?
39. Furax - 08 Февраля, 2008 - 23:59:10 - перейти к сообщению
После
CODE:
$pages=ceil($kolvo/$topage);
пишешь
CODE:
$text.='<hr>';
40. Vladimir - 09 Февраля, 2008 - 04:06:10 - перейти к сообщению
Спасибо!

Форум на AlfaSpace.NET


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

[Script Execution time: 0.0428]     [ 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