Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Помощь с PHP!

Статус пользователя miRror
сообщение 29.12.2014, 0:08
Сообщение #21


Стаж: 15 лет

Сообщений: 1151
Благодарностей: 1002
Полезность: 967

Меценат Меценат

Ошибка скорее всего не в этом файле , а в другом. Скиньте полный текст ошибки. В данном файле на 7 строке все верно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 29.12.2014, 8:52
Сообщение #22


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Цитата
Нет, это версия MySQL которой поддерживается синтаксис кода.

О чем Вы? Какая версия о0

Код
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-5,5' at line 7

Данное сообщение значит что ошибка кроется в синтаксисе запроса, и правильно, запрос приходит такой:
Цитата
$select_query = "SELECT * FROM ".DB_SERVERS . "
WHERE
server_new != 1 AND
server_status != 0 AND
server_off != 1
ORDER BY
server_vip DESC, votes DESC ".$query_limit
;

==
Цитата
$select_query = "SELECT * FROM YOUR_TBL WHERE server_new != 1 AND server_status != 0 AND server_off != 1 ORDER BY server_vip DESC, votes DESC LIMIT -5,5";

А теперь можно попробовать выполнить его из phpmyadmin и понять что запрос не пройдет, а прочитав доки на том-же mysql.ru видно:
Цитата
Выражение LIMIT может использоваться для ограничения количества строк, возвращенных командой SELECT. LIMIT принимает один или два числовых аргумента. Эти аргументы должны быть целочисленными константами. Если заданы два аргумента, то первый указывает на начало первой возвращаемой строки, а второй задает максимальное количество возвращаемых строк. При этом смещение начальной строки равно 0 (не 1):

Следовательно проблема в отрицательном значении лимита.
Нужен весь код, чтобы понимать откуда получается наша переменная, которая задает лимит.
pagination.class.php оттуда мне нужно все, что касается $pagination->calculate_pages, тогда станет ясно в чем дело.
Еще на всякий случай выведи var_dump($pg_info); и var_dump($query_limit);
Последний должен быть равен string LIMIT -5,5

Отредактировал: oxoTHuk., - 29.12.2014, 8:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя RoMaNSkole
сообщение 29.12.2014, 16:18
Сообщение #23
Стаж: 13 лет
Город: Сколе

Сообщений: 220
Благодарностей: 28
Полезность: < 0

oxoTHuk.,

pagination.class.php

Код
<?php
class pagination
{
    public function __construct() {
    }
    public function calculate_pages($total_rows, $rows_per_page, $page_num) {
        $arr = array();
        // calculate last page
        $last_page = ceil($total_rows / $rows_per_page);
        // make sure we are within limits
        $page_num = (int) $page_num;
        if ($page_num < 1) {
           $page_num = 1;
        }
        elseif ($page_num > $last_page) {
           $page_num = $last_page;
        }
        $upto = ($page_num - 1) * $rows_per_page;
        $arr['limit'] = 'LIMIT '.$upto.',' .$rows_per_page;
        $arr['current'] = $page_num;
        if($page_num == 1) {
            $arr['previous'] = $page_num;
        } else {
            $arr['previous'] = $page_num - 1;
        }
        if($page_num == $last_page) {
            $arr['next'] = $last_page;
        } else {
            $arr['next'] = $page_num + 1;
        }
        $arr['last'] = $last_page;
        $arr['info'] = 'Page ('.$page_num.' of '.$last_page.')';
        $arr['pages'] = $this->get_surrounding_pages($page_num, $last_page, $arr['next']);
        return $arr;
    }
    function get_surrounding_pages($page_num, $last_page, $next) {
        $arr = array();
        if($page_num <= 4) {
            $show = 4;
            $pg_pos = 'l';
        } elseif($page_num > $last_page - 4) {
            $show = 4;
            $pg_pos = 'r';
        } else {
            $show = 3; // how many boxes
            $pg_pos = 'c';
        }
        //echo $pg_pos;
        // at first
        if ($pg_pos == 'l') {
            // case of 1 page only
            if($last_page == 1) return array(1);
            for ($i = 0; $i < $show + 1; $i++) {
                if ($i == $last_page) break;
                array_push($arr, $i + 1);
            }
            if($last_page > 6) array_push($arr, '...');
            return $arr;
        }
        // at last
        if ($pg_pos == 'r') {
            $start = $last_page - $show - 1;
            if ($start < 1) $start = 0;
            if($last_page > 6) array_push($arr, '...');
            for ($i = $start; $i < $last_page; $i++) {
                array_push($arr, $i + 1);
            }
            return $arr;
        }
        // at middle
        $start = $page_num - $show;
        if ($start < 1) $start = 0;
        array_push($arr, '...');
        for ($i = $start; $i < $page_num; $i++) {
            array_push($arr, $i + 1);
        }
        for ($i = ($page_num + 1); $i < ($page_num + $show); $i++) {
            if ($i == ($last_page + 1)) break;
            array_push($arr, $i);
        }
        array_push($arr, '...');
        return $arr;
    }
}
?>


Хостинг ігрових серверів - GM-HOST.COM.UA
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 6.1.2015, 16:13
Сообщение #24


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

RoMaNSkole, ну тут все логично, у нас получается так, что страниц в общем и целом получается одна, а формула вычисления следуюущая:
Код
$upto = ($page_num - 1) * $rows_per_page;

Т.е. $upto =(1 - 1) * количество серверов на страницу.
Но как бы в первую очередь пых должен выплюнуть ошибку о делении на ноль... как он получает -5 для меня остается пока загадкой.
В pagination.class.php замени
Код
$upto = ($page_num - 1) * $rows_per_page;

на
Код
$upto = ($page_num - 1) * $rows_per_page;
die($upto);

И покажи мне результат, потом в die сделай тоже самое, только выведи $page_num:
Код
$upto = ($page_num - 1) * $rows_per_page;

на
Код
$upto = ($page_num - 1) * $rows_per_page;
die($page_num);

Ну и тоже самое для $rows_per_page
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: