Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2010, 13:00   #1
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию ошибка Call to a member function fetch_assoc() on a non-object

Что значит эта ошибка? в скрипте должно выполнятся подключение к базе, с задействием класса по постраничному выводу

PHP код:
 <?php
//подключаем класс Paging
require('paging.inc.php');

$_DB = new mysqli("host",  "name""pass""base");

//создаем экземпляр класса Paging
$_PAGING = new Paging($_DB);

$r $_PAGING->get_page"SELECT*
FROM jos_vm_product
LIMIT 20 
); 



while(
$row $r->fetch_assoc())//---!!!!!----ПИШЕТ ЧТО ОШИБКА В ЭТОЙ //СТРОКЕ   
//Fatal error: Call to a member function fetch_assoc() on a non-object in //\search.php on line 89

{
 echo 
$row['product_id'];
}

//выводим информационную строку вида: "Показано с 1 по 20 из 107" 
echo $_PAGING->get_result_text().' объявлений';

//выводим ссылки-ярлыки на предыдущую и следующую страницы
echo 'Страницы: '.$_PAGING->get_prev_page_link().' '.$_PAGING->get_next_page_link().'<br /><br />';

//а также строку с номерами страниц (основные ярлыки)
echo $_PAGING->get_page_links();
?>
файл 'paging.inc.php
PHP код:
<?
class Paging {

private 
$page_size 10;
private 
$link_padding 10;
private 
$page_link_separator ' ';
private 
$next_page_text 'следующая →';
private 
$prev_page_text '← предыдущая';
private 
$result_text_pattern 'Показано с %s по %s из %s';
private 
$page_var 'p';

private 
$db;
private 
$q;
private 
$total_rows;
private 
$total_pages;
private 
$cur_page;

public function 
__construct($db$q=''$page_var='p')
{
    
$this->db $db;
    if (
$q$this->set_query($q);
    
$this->page_var $page_var;
    
$this->cur_page = isset($_GET[$this->page_var]) && (int)$_GET[$this->page_var] > ? (int)$_GET[$this->page_var] : 1;
}

public function 
set_query($q)
{
    
$this->$q;
}

public function 
set_page_size($page_size)
{
    
$this->page_size abs((int)$page_size);
}

public function 
set_link_padding($padding)
{
    
$this->link_padding abs((int)$padding);
}

public function 
get_page($q='')
{
    if (
$q$this->set_query($q);

    
$r $this->db->query$this->query_paging($this->q) );
    
$this->total_rows array_pop($this->db->query('SELECT FOUND_ROWS()')->fetch_row());

    if (
$this->page_size !== 0$this->total_pages ceil($this->total_rows/$this->page_size);
    
    if (
$this->cur_page $this->total_pages)
    {
        
$this->cur_page $this->total_pages;
        if ( 
$this->total_pages $r $this->db->query$this->query_paging($this->q) );
    }
    
    return 
$r;
}

public function 
get_result_text()
{
    
$start = (($this->cur_page-1) * $this->page_size)+1;
    
$end = (($start-1+$this->page_size) >= $this->total_rows)? $this->total_rows:($start-1+$this->page_size);

    return 
sprintf($this->result_text_pattern$start$end$this->total_rows);
}

public function 
get_page_links()
{
    if ( !isset(
$this->total_pages) ) return '';

    
$page_link_list = array();

    
$start $this->cur_page $this->link_padding;
    if ( 
$start $start 1;
    
$end $this->cur_page $this->link_padding-1;
    if ( 
$end $this->total_pages $end $this->total_pages;

    if ( 
$start )  $page_link_list[] = $this->get_page_link$start-1$start '...' '' );
    for (
$i=$start$i <= $end$i++)  $page_link_list[] = $this->get_page_link$i );
    if ( 
$end $this->total_pages $page_link_list[] = $this->get_page_link$end +1$end == $this->total_pages '' '...' );
    if ( 
$end <= $this->total_pages $page_link_list[] = $this->get_page_link$this->total_pages );

    return 
implode($this->page_link_separator$page_link_list);
}

public function 
get_next_page_link()
{
    return isset(
$this->total_pages) && $this->cur_page $this->total_pages $this->get_page_link$this->cur_page 1$this->next_page_text ) : '';
}

public function 
get_prev_page_link()
{
    return isset(
$this->total_pages) && $this->cur_page $this->get_page_link$this->cur_page 1$this->prev_page_text ) : '';
}

private function 
get_page_link($page$text='')
{
    if (!
$text)    $text $page;

    if (
$page != $this->cur_page)
    {
        
$reg '/((&|^)'.$this->page_var.'=)[^&#]*/';
        
$url '?'.( preg_match$reg$_SERVER['QUERY_STRING'] ) ? preg_replace($reg'${1}'.$page$_SERVER['QUERY_STRING']) : ( $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'].'&' '' ).$this->page_var.'='.$page);
        return 
'<a href="'.$url.'">'.$text.'</a>';
    }
    return 
'<span>'.$text.'</span>';
}

private function 
query_paging()
{
    
$q $this->q;

    if (
$this->page_size != 0)
    {
        
//calculate the starting row
        
$start = ($this->cur_page-1) * $this->page_size;
        
//insert SQL_CALC_FOUND_ROWS and add the LIMIT
        
$q preg_replace('/^SELECT\s+/i''SELECT SQL_CALC_FOUND_ROWS '$this->q)." LIMIT {$start},{$this->page_size}";
    }

    return 
$q;
}
}
?>
Bendebej вне форума Ответить с цитированием
Старый 24.03.2010, 13:12   #2
Bendebej
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 63
По умолчанию

fetch_assoc() - что это за функция такая, и что под ней подразумевал автор скрипта? Кто-нибудь догадается?

вот кстати ссылка на статью про этот скрипт
http://www.tigir.com/paging.htm#php_paging_class

скрипт рабочий!!!
ошибка была в том, что в запросе скрипта я указал LIMIT
в то время как запрос обрабатывается в классе
Всем спасибо!)

Последний раз редактировалось Bendebej; 24.03.2010 в 14:57.
Bendebej вне форума Ответить с цитированием
Старый 02.04.2010, 14:04   #3
webgid
Новичок
Джуниор
 
Регистрация: 02.04.2010
Сообщений: 1
По умолчанию ==

А мне нужно ещё чтоб только опубликованные принимались во внимание
Код:
WHERE public='1'
это в классе нужно что то менять?
webgid вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка - Run-time error '91' Object variable or With block variable not set Артур Иваныч Microsoft Office Excel 13 12.09.2012 14:18
Call to undefined function 'pow' fs444 Общие вопросы C/C++ 4 14.01.2010 14:34
Ошибка Constant object cannot be passed as var parameter nusik Общие вопросы Delphi 7 15.05.2009 21:00
Fatal error: Call to undefined function mysql_connect() Air Помощь студентам 1 17.01.2009 12:41
Ошибка! ActiveX component can't create object! Insainer Microsoft Office Access 0 27.01.2008 11:13