Уважаемые программисты! - Страница 3 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming > PHP

PHP Форум как для начинающих программистов на PHP так и для профессионалов этого дела. Если нужно создать скрипт, функцию и т.д, но не знаете как, спросите у нас и мы вам подскажем. Здесь вы найдете примеры скриптов которые вы сможете использовать на сайтах своих серверов (онлайн, регистрация, семь печатей, топ игроков). Так же много книг и статей.
Описание темы:Только для тех кто знает SMARTY

Ответ
Опции темы
Непрочитано 02.08.2010, 16:46   #21
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Уважаемые программисты!

PHP код:
if ($_GET['st']<>"") {$sql_start=$_GET['st']-1;} 
Кто же так проверяет. Вообще, код ужасен, очень. Что-то разобрать здесь мне лень
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 02.08.2010, 17:09   #22
Аватар для Cool_prime
Пользователь

Автор темы (Топик Стартер) Re: Уважаемые программисты!

Цитата:
Сообщение от PROGRAMMATOR
Кто же так проверяет. Вообще, код ужасен, очень. Что-то разобрать здесь мне лень
ну ето не моя проверка, я писал что код в поисковике достул ( писал наверно =))
А то что лень ет канешн=) ти ведь Програматор =) Все таки ето моя первая CMS.
__________________
Сайт - рейтинг серверов WoW
Cool_prime вне форума Ответить с цитированием
Непрочитано 02.08.2010, 17:10   #23
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Уважаемые программисты!

Первая это хорошо, если бы не первая, то было бы намного хуже. Могу пример дать пагинатора в MZZ.

PHP код:
/**
 * pager: класс генерации списка страниц для постраничного вывода информации
 *
 * @package modules
 * @subpackage pager
 * @version 0.2.3
 */
class pager
{
    
/**
     * базовый URL, к которому добавляется переменная page с соответствующим номером страницы
     *
     * @var string
     */
    
private $baseurl;

    
/**
     * номер текущей страницы
     *
     * @var integer
     */
    
private $page;

    
/**
     * число объектов на страницу
     *
     * @var integer
     */
    
private $perPage;

    
/**
     * общее число объектов
     *
     * @var integer
     */
    
private $itemsCount;

    
/**
     * число номеров страниц, которые будут выводиться возле текущего
     * в случае, если между текущей и первой (или последней) страницей слишком много страниц
     * выглядит это примерно так:
     * 1 ... 2 <b>3</b> 4 ... 20
     * (текущая страница выделена жирным)
     * в данном случае $roundItems = 1
     *
     * @var integer
     */
    
private $roundItems;

    
/**
     * рассчитанное значение общего числа страниц
     *
     * @var integer
     */
    
private $pagesTotal;

    
/**
     * Флаг, изменяющий порядок страниц на противоположный (от больших к меньшим)
     *
     * @var boolean
     */
    
private $reverse;

    
/**
     * переменная для хранения сгенерированного результата
     * для предотвращения ненужной повторной обработки
     *
     * @var array
     */
    
private $result;

    
/**
     * конструктор
     *
     * @param string $baseurl базовый урл
     * @param integer $page номер текущей страницы
     * @param integer $perPage число объектов на одну страницу
     * @param integer $roundItems число номеров страниц возле текущей
     * @param boolean $reverse обратный порядок страниц
     */
    
public function __construct($baseurl$page$perPage$roundItems 2$reverse false)
    {
        
$baseurl preg_replace('/([&?])page=.*?($|&)/i''$1'$baseurl);

        if (((
$end strrpos($baseurl'&')) || ($end strrpos($baseurl'?'))) && $end === strlen($baseurl) - 1) {
            
$baseurl substr($baseurl0, -1);
        }

        
$this->baseurl $baseurl;
        
$this->page = (int)$page;
        
$this->setPerPage($perPage);
        
$this->itemsCount 0;
        
$this->roundItems = (int)$roundItems;
        
$this->reverse $reverse;
    }

    
/**
     * метод установки числа объектов на 1 страницу
     *
     * @param integer $value
     */
    
private function setPerPage($value)
    {
        
$this->perPage = ($value 1) ? 10 : (int)$value;
    }

    
/**
     * метод получения числа объектов на 1 страницу
     *
     * @return integer
     */
    
public function getPerPage()
    {
        return 
$this->perPage;
    }

    
/**
     * Возвращает фактический номер страницы
     *
     * @return integer
     */
    
public function getRealPage()
    {
        return 
$this->reverse $this->getPagesTotal() - $this->page $this->page;
    }

    
/**
     * Получение номера текущей страницы
     *
     * @return integer
     */
    
public function getPage()
    {
        return 
$this->page;
    }

    
/**
     * Возвращает ссылку или номер следующей страницы
     *
     * @param boolean $withUrl если false, то возвращает только номер страницы
     * @return string|null ссылка на предыдущую страницу либо null, в случае если текущая страница последняя
     */
    
public function getNext($withUrl true)
    {
        if (
$this->reverse && $this->page 1) {
            
$page $this->page 1;
        } elseif (!
$this->reverse && $this->page $this->getPagesTotal()) {
            
$page $this->page 1;
        }

        return isset(
$page) ? ($withUrl $this->appendPageToUrl($page) : $page): null;
    }

    
/**
     * Возвращает ссылку или номер предыдущей страницы
     *
     * @param boolean $withUrl если false, то возвращает только номер страницы
     * @return string|null ссылка на предыдущую страницу либо null, в случае если текущая страница первая
     */
    
public function getPrev($withUrl true)
    {
        if (
$this->reverse && $this->page $this->getPagesTotal()) {
            
$page $this->page 1;
        } elseif (!
$this->reverse && $this->page 1) {
            
$page $this->page 1;
        }

        return isset(
$page) ? ($withUrl $this->appendPageToUrl($page) : $page): null;
    }

    public function 
getLast($withUrl true)
    {
        
$page = ($this->reverse $this->getPagesTotal());
        if (
$withUrl) {
            return 
$this->appendPageToUrl($page);
        }
        return 
$page;
    }

    public function 
getFirst($withUrl true)
    {
        
$page = ($this->reverse $this->getPagesTotal() : 1);
        if (
$withUrl) {
            return 
$this->appendPageToUrl($page);
        }
        return 
$page;
    }


    
/**
     * Возвращает общее количество объектов
     *
     * @return integer
     */
    
public function getItemsCount()
    {
        return 
$this->itemsCount;
    }

    
/**
     * Возвращает количество уже пролистанных объектов
     *
     * @return integer
     */
    
public function getOffset()
    {
        if (
$this->page 0) {
            
$firstPage $this->reverse $this->getPagesTotal() : 1;
            
$offset abs($this->page $firstPage) * $this->perPage;
        } else {
            
$offset 0;
        }

        return 
$offset;
    }

    
/**
     * метод установки общего числа объектов
     *
     * @param integer $count
     */
    
public function setCount($count)
    {
        
$this->itemsCount = (int)$count;

        if (
$this->page <= 0) {
            
$this->page $this->reverse $this->getPagesTotal() : 1;
        } elseif (
$this->page $this->getPagesTotal()) {
            
$this->page $this->getPagesTotal();
        }
    }

    
/**
     * метод получения чила страниц
     *
     * @return integer
     */
    
public function getPagesTotal()
    {
        if (empty(
$this->pagesTotal)) {
            
$this->pagesTotal ceil($this->itemsCount $this->getPerPage());
        }
        return 
$this->pagesTotal;
    }

    
/**
     * метод получения части запроса, обеспечивающей выборку нужного числа объектов с нужным смещением
     *
     * @return object
     */
    
public function getLimitQuery()
    {
        
$criteria = new criteria();

        
$offset $this->getOffset();

        return 
$criteria->setLimit($this->perPage)->setOffset($offset);
    }

    
/**
     * метод получения сгенерированного "пейджинга" в массив
     * во избежание повторного проведения аналогичных вычислений результаты кешируются в памяти
     *
     * @return array
     */
    
public function toArray()
    {
        if (empty(
$this->result)) {
            
$sign $this->reverse ? -1;

            
$result = array();

            
$pagesTotal $this->getPagesTotal();

            if (
$this->itemsCount 0) {
                
$firstPage $this->reverse $pagesTotal 1;
                
$result[$firstPage] = array('page' => $firstPage'url' => $this->appendPageToUrl($firstPage));

                
$leftSkip = ($this->reverse $pagesTotal $this->page $this->page 2) > $this->roundItems;
                
$rightSkip = ($this->reverse $this->page $pagesTotal $this->page 1) > $this->roundItems;

                if (
$leftSkip) {
                    
$result[] = array('skip' => true);
                    
$left $this->page $sign $this->roundItems;
                } else {
                    
$left $firstPage $sign;
                }

                if (
$rightSkip) {
                    
$right $this->page $sign $this->roundItems;
                } else {
                    
$right $this->reverse $pagesTotal;
                }


                while (
$sign * ($right $left) >= 0) {
                    
$result[$left] = array('page' => $left'url' => $this->appendPageToUrl($left));
                    
$left += $sign;
                }

                if (
$rightSkip) {
                    
$result[] = array('skip' => true);
                    
$lastPage abs($firstPage $pagesTotal) + 1;
                    
$result[$lastPage] = array('page' => $lastPage'url' => $this->appendPageToUrl($lastPage));
                }

                if (isset(
$result[$this->page])) {
                    
$result[$this->page]['current'] = true;
                }
            }

            
$this->result $result;
        }
        return 
$this->result;
    }

    
/**
     * метод получения отформатированного "пейджинга"
     * для форматирования используется smarty и специальный шаблон
     *
     * @param string $tpl имя шаблона отображения страниц
     * @return string
     */
    
public function toString($tpl 'pager/pager.tpl')
    {
        
$toolkit systemToolkit::getInstance();
        
$smarty $toolkit->getSmarty();
        
$smarty->assign('pages'$this->toArray());
        return 
$smarty->fetch($tpl);
    }

    protected function 
appendPageToUrl($page)
    {
        if ((int)
$page === (int)$this->getFirst(false)) {
            return 
$this->baseurl;
        }
        return 
$this->baseurl . (strpos($this->baseurl'?') ? '&' '?') . 'page=' $page;
    }

__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 02.08.2010, 17:24   #24
Аватар для Cool_prime
Пользователь

Автор темы (Топик Стартер) Re: Уважаемые программисты!

Цитата:
Сообщение от PROGRAMMATOR
Первая это хорошо, если бы не первая, то было бы намного хуже. Могу пример дать пагинатора в MZZ.
Ну да=)

щас буду пробовать интегрировать в свой двиг...
__________________
Сайт - рейтинг серверов WoW
Cool_prime вне форума Ответить с цитированием
Непрочитано 02.08.2010, 17:28   #25
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Уважаемые программисты!

Не для интеграции давал. Почитайте код, чтобы понять как оно работает. Да и не все из этого класса вам необходимо, большую часть можно удалить за ненадобностью.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 05.08.2010, 23:00   #26
Аватар для Cool_prime
Пользователь

Автор темы (Топик Стартер) Re: Уважаемые программисты!

Вот так. У меня родился интелект и я придумал для себя простенький вивод новостей на страничку, конечно содрал сами кнопки переключения между ними, но думаю что не поленился би в будущем и написал би свой.
Так вот, если Програматор позволиш, пусть модери создадут для меня ( или я сам, руки вроде не кривие ) отдельную тему, ведь Я собрался создать ету CMS и написать для нее модули под все MMORPG игри ( WoW, la2, PW... ).. Или буду рад даже в етой теме все вилаживать.
PHP код:
$nums 5
Количество новостей на страничку...
PHP код:
if (isset($_GET['page']))
{
    
$page intval($_GET['page']);
}
else
{
    
$page 1;
}

$query "SELECT COUNT(*) AS `counter`
            FROM `SE_news`"
;
$sql mysql_query($query) or die(mysql_error());
$row mysql_fetch_assoc($sql); 
 
$elements $row['counter'];

$pages ceil($elements/$nums);

if (
$page 1)
{
    
$page 1;
}
elseif (
$page $pages)
{
    
$page $pages;
}

$start = ($page-1)*$nums
Ну я думаю что ето понятно, для новичком советую прочитать пару книг по переменних, и т.п.
PHP код:
LIMIT {$start}, {$nums
ето то что нуно вставить в Ваш запрос!
PHP код:
if ($page 1)
{
    
$res ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '"><сюда</a> ';

 
for (
$i=$left_neighbour$i<=$right_neighbour$i++)
{
    if (
$i != $page)
    {
        
$res = (' <a href="?page=' $i '">' $i '</a> ');
    }
    else
    {
        
// выбранная страница
        
$res = (' <b>' $i '</b> ');
    }

 
if (
$page $pages)
{
    
$res = (' <a href="?page=' . ($page-1) . '"><< Предущая</a> | <a href="?page=' . ($page+1) . '">Следующая >></a> | <a href="?page=' $pages '">конец</a> ...  ');
    
} else { 
$res = (' <a href="?page=' . ($page-1) . '"><< Предущая</a> | конец ...  ');

А ето сам вивод кнопок на страничку, конечно все можно изменить даже сказал би нужно изменить но для начала подойдет.
__________________
Сайт - рейтинг серверов WoW
Cool_prime вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуются java программисты maa Рынок / Marketplace 0 03.01.2010 19:32


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 22:38. Часовой пояс GMT +3.

Вверх