Постраничная навигация..

Тема закрыта
316
.
Вот пишу гостевушку..сталкнулся с такой проблемой..вывожу с таблицы данные по 5 на странице..тока вот навигации постраницам нема..сделать как - Х.З..Можь чем нибудь поможете?
.
В стельку трезвый
посмотри как сделано в двиге.
.
Максим, Смотрел..так нефига и не понял..
.
¤
Gish (25.08.2010/14:16)
Смотрел..так нефига и не понял..
плохо смотрел. всю основную работу там выполняет функция pagenav(), а как с ней работать - смотри в любом файле, где есть постраничный вывод
.
Let Mortal Kombat begin
все просто. Вверху скрипта ставишь $kmess =5; и все норм это если ты делаешь под джон
.
Кстати разработчики обратите внимание что функция постр. навигации уже устаревшая и ужасная.

Можно переделать под двиг вот такую например

function page_strnavigation($link, $posts, $start, $total, $koll = 4) {
    if ($total > 0) {
        echo '<hr /><div class="nav">Страницы: ';
        if ($start != 0) {
            echo '<a href="' . $link . 'start=' . ($start - $posts) . '&amp;' . SID . '" title="Назад">&laquo;</a> ';
        } 

        $ba = ceil($total / $posts);
        $ba2 = $ba * $posts - $posts;

        $min = $start - $posts * ($koll - 1);
        $max = $start + $posts * $koll;

        if ($min < $total && $min > 0) {
            if ($min - $posts > 0) {
                echo '<a href="' . $link . 'start=0&amp;' . SID . '">1</a> ... ';
            } else {
                echo '<a href="' . $link . 'start=0&amp;' . SID . '">1</a> ';
            } 
        } 

        for($i = $min; $i < $max;) {
            if ($i < $total && $i >= 0) {
                $ii = floor(1 + $i / $posts);

                if ($start == $i) {
                    echo ' <span class="navcurrent">' . $ii . '</span> ';
                } else {
                    echo ' <a href="' . $link . 'start=' . $i . '&amp;' . SID . '">' . $ii . '</a> ';
                } 
            } 

            $i += $posts;
        } 

        if ($max < $total) {
            if ($max + $posts < $total) {
                echo ' ... <a href="' . $link . 'start=' . $ba2 . '&amp;' . SID . '">' . $ba . '</a>';
            } else {
                echo ' <a href="' . $link . 'start=' . $ba2 . '&amp;' . SID . '">' . $ba . '</a>';
            } 
        } 

        if ($total > $start + $posts) {
            echo ' <a href="' . $link . 'start=' . ($start + $posts) . '&amp;' . SID . '" title="Вперед">&raquo;</a>';
        } 

        echo '</div><br />';
    } 
}
.
Krite
А я бы такую зафигарил

class PAGINGS{
public $total;
private $total_pages;
private $page;
private $start;
private $end;
public $get;
public $count_get;

public function __construct($size, $query){
$this->total = mysql_result(mysql_query(preg_replace('~SELECT (.*?) FROM~isU', 'SELECT COUNT(*) FROM', $query).' ;'), 0);
$this->total_pages = ceil($this->total / $size);
$this->page = isset($_POST['page']) ? $_POST['page'] : $_GET['page'];
$this->page = !empty($this->page) && ctype_digit($this->page) && $this->page >= 1 && $this->page <= $this->total_pages ? $this->page : 1;
$this->start = ($this->page * $size) - $size;
$this->end = $this->start + $size < $this->total ? $this->start + $size : $this->total;
$this->get = mysql_query($query.' LIMIT '.$this->start.', '.$size.' ;');
$this->count_get = mysql_num_rows($this->get);
}

public function Links($link){
$link_list = '';
$start = $this->page - 3;
$end = $this->page + 3;
for($i = $start; $i <= $end; $i++){$link_list .= ($i <= $this->total_pages && $i >= 1 ? ($this->page != $i ? ' <a href="'.$link.'page='.$i.'&amp;'.SID.'">'.$i.'</a> ' : ' ('.$i.') ') : '');}
return '<div class="nav">
'.($this->page > 1 ? '<a href="'.$link.'page='.($this->page - 1).'&amp;'.SID.'">&lt;&lt;Пред. </a>' : '&lt;&lt;Пред. ').' | '.($this->page < $this->total_pages ? '<a href="'.$link.'page='.($this->page + 1).'&amp;'.SID.'"> След.&gt;&gt;</a>' : ' След.&gt;&gt;').'<br />
Стр.: '.($start > 1 ? '<a href="'.$link.'page=1&amp;'.SID.'">1</a> ... ' : '').$link_list.($end < $this->total_pages ? ' ... <a href="'.$link.'page='.$this->total_pages.'&amp;'.SID.'">'.$this->total_pages.'</a>' : '').'
<form action="'.$link.SID.'" method="post">
<p>
К стр.: <input class="form" name="page" maxlength="3" size="5" value="'.$this->page.'" />
<input class="submit" type="submit" value="Go" />
</p>
</form>
Показано с '.($this->start + 1).' по '.$this->end.' из '.$this->total.'
</div>'."\r\n";
}

//Пример
$PAGINGS = new PAGINGS(10, 'SELECT * FROM `test`'); // создание обьекта,1 аргумент пунктов на страницу,второй запрос к базе (без ; в конце)
if($PAGINGS->count_get > 0){
while($row = mysql_fetch_array($PAGINGS->get))
{
echo $row['bla'];
}
echo $PAGINGS->Links('?'); // вывод меню навигации в аргументе указывать адрес страницы
}
.
В стельку трезвый
Гг. помешались на ООП.
Тогда надо дорабатывать твою функцию ещё на предмет подсчёта.
COUNT(*) не пойдёт в группировочных запросах.
.
Максим, где ты там ооп увидел?
Постраничная навигация на классах , без разницы какого она качества кода, уже плохое понимание программирования. Это все равно что дочь в школу не на легковушке,а на подьемном кране подвозить гг
Что касается постраничной навигации джона, то надо следовать одной мудрости, а именно - Работает : НЕ ТРОЖЬ! Гг
.
¤
Николай (25.08.2010/19:34)
Работает : НЕ ТРОЖЬ! Гг
не везде это нужно, вообще такой подход - иногда зло
Всего: 15