Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возникла ошибка! помогите её исправить 
:(
    Опции темы
Pack
Дата 17.8.2006, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Пожалуйста помогите исправить данную ошибку!

Warning: Invalid argument supplied for foreach() in index.php  320

320 строка:
***
Код

foreach ( $categories as $category ) {
        if ( ( intval($hide_empty) == 0 || $category->category_count) && (!$hierarchical || $category->category_parent == $child_of) ) {
            $num_found++;
            $link = '<a href="'.get_category_link($category->cat_ID).'" ';
            if ( $use_desc_for_title == 0 || empty($category->category_description) )
                $link .= 'title="'. sprintf(__("View all posts filed under %s"), wp_specialchars($category->cat_name)) . '"';
            else
                $link .= 'title="' . wp_specialchars(apply_filters('category_description',$category->category_description,$category)) . '"';
            $link .= '>';
            $link .= apply_filters('list_cats', $category->cat_name, $category).'</a>';

            if ( (! empty($feed_image)) || (! empty($feed)) ) {

                $link .= ' ';

                if ( empty($feed_image) )
                    $link .= '(';

                $link .= '<a href="' . get_category_rss_link(0, $category->cat_ID, $category->category_nicename) . '"';

                if ( !empty($feed) ) {
                    $title = ' title="' . $feed . '"';
                    $alt = ' alt="' . $feed . '"';
                    $name = $feed;
                    $link .= $title;
                }

                $link .= '>';
***
PM MAIL   Вверх
Рыжий
Дата 17.8.2006, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Pack, мало кода - надо еще чуть повыше взять, и расскажи о переменной $categories 
PM MAIL ICQ   Вверх
ewolf
Дата 17.8.2006, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



$categories должна быть массивом. Скорее всего в строке, где происходит присвоение ей данных (ну, скажем из базы), что-то не срабатывает и $categories остается пустой или false, ну, в общем, не массивом.
Если же ситуация, когда $categories может быть не массивом допустима (например, когда этих категорий действительно нет), можно поставить перед foreach проверку if( is_array($categories) ) или if( $categories === false ) $categories = array();
Смотря, что ты хочешь получить в итоге.
PM MAIL ICQ   Вверх
Pack
Дата 17.8.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Привел код выше 320 строки.


Код

function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_order = 'asc', $file = '', $list = true, $optiondates = 0, $optioncount = 0, $hide_empty = 1, $use_desc_for_title = 1, $children=FALSE, $child_of=0, $categories=0, $recurse=0, $feed = '', $feed_image = '', $exclude = '', $hierarchical=FALSE) {
    global $wdb, $w_query;
    
    if ( '' == $file )
        $file = get_settings('home') . '/';

    $exclusions = '';
    if ( !empty($exclude) ) {
        $excats = preg_split('/[\s,]+/',$exclude);
        if ( count($excats) ) {
            foreach ( $excats as $excat ) {
                $exclusions .= ' AND cat_ID <> ' . intval($excat) . ' ';
            }
        }
    }

    $exclusions = apply_filters('list_cats_exclusions', $exclusions );

    if ( intval($categories) == 0 ) {
        $sort_column = 'cat_'.$sort_column;

        $query = "
            SELECT cat_ID, cat_name, category_nicename, category_description, category_parent, category_count
            FROM $wdb->categories
            WHERE cat_ID > 0 $exclusions
            ORDER BY $sort_column $sort_order";

        $categories = $wdb->get_results($query);
    }

    if ( $optiondates ) {
        $cat_dates = $wdb->get_results("    SELECT category_id,
        UNIX_TIMESTAMP( MAX(post_date) ) AS ts
        FROM $wdb->posts, $wdb->post2cat, $wdb->categories
        WHERE post_status = 'publish' AND post_id = ID $exclusions
        GROUP BY category_id");
        foreach ( $cat_dates as $cat_date ) {
            $category_timestamp["$cat_date->category_id"] = $cat_date->ts;
        }
    }

    $num_found=0;
    $thelist = "";

PM MAIL   Вверх
Mal Hack
Дата 17.8.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Pack @  17.8.2006,  10:37 Найти цитируемый пост)
$categories=0

А используешь, как массив.

Цитата(Pack @  17.8.2006,  10:37 Найти цитируемый пост)
        $categories = $wdb->get_results($query);

Возвращаться массив должен.
PM ICQ   Вверх
Pack
Дата 17.8.2006, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



В итоге должно вывести список категорий. 
PM MAIL   Вверх
Pack
Дата 17.8.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Mal Hack, 

Обьясните пожалуйста по подробнее, что и как нужно возвратить!
PM MAIL   Вверх
sergejzr
Дата 17.8.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 5
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 17.8.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Pack, Сделай перед foreach вставку:  echo $categories.
Тебе нужно чтобы он вывел Array. 
А судя по всему там не массив совсем, а простая переменная.
PM MAIL ICQ   Вверх
Pack
Дата 17.8.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Рыжий, 

Сделал echo $categories и вывел ArrayArrayArrayArray...
PM MAIL   Вверх
Pack
Дата 17.8.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Помогите пожалуйста исправить
PM MAIL   Вверх
ewolf
Дата 17.8.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Посмотри структуру массива $categories

Отредактируй вот этот участок кода

Код

if ( intval($categories) == 0 ) {
        $sort_column = 'cat_'.$sort_column;

        $query = "
            SELECT cat_ID, cat_name, category_nicename, category_description, category_parent, category_count
            FROM $wdb->categories
            WHERE cat_ID > 0 $exclusions
            ORDER BY $sort_column $sort_order";

        $categories = $wdb->get_results($query);
    }


на

Код

if ( intval($categories) == 0 ) {
        $sort_column = 'cat_'.$sort_column;

        $query = "
            SELECT cat_ID, cat_name, category_nicename, category_description, category_parent, category_count
            FROM $wdb->categories
            WHERE cat_ID > 0 $exclusions
            ORDER BY $sort_column $sort_order";

        $categories = $wdb->get_results($query);
        print_r($categories);
    }
else {
        print_r($categories);
    }


Посмотри, что выводится
PM MAIL ICQ   Вверх
Pack
Дата 18.8.2006, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Выводится ошибка
Fatal error: Call to a member function on a non-object in line 302

 $categories = $wdb->get_results($query);
PM MAIL   Вверх
Pack
Дата 23.8.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



????????????
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.