Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Undefined index and Invalid argument supplied for foreach()
 
 автор: Санька   (29.09.2008 в 14:10)   письмо автору
 
 

Ругается вот на этот код foreach ($cat_forum['c'] as $cat_id => $forums_ary)

$opt = '';
foreach ($cat_forum['c'] as $cat_id => $forums_ary)
{
    $opt .= '<optgroup label="&nbsp;'. $cat_title_html[$cat_id] ."\">\n";

    foreach ($forums_ary as $forum_id)
    {
        $forum_name = $forum_name_html[$forum_id];
        if (strlen($forum_name) > $max_forum_name_len)
        {
            $forum_name = substr($forum_name, 0, $max_forum_name_len) . '..';
        }
        $style = '';
        if (!isset($cat_forum['subforums'][$forum_id]))
        {
            $class = 'root_forum';
            $class .= isset($cat_forum['forums_with_sf'][$forum_id]) ? ' has_sf' : '';
            $style = " class=\"$class\"";
        }
        $selected = (isset($search_in_forums_fary[$forum_id])) ? HTML_SELECTED : '';
        $opt .= '<option value="'. $forum_id .'"'. $style . $selected .'>'. (isset($cat_forum['subforums'][$forum_id]) ? HTML_SF_SPACER : '') . $forum_name ."&nbsp;</option>\n";
    }

    $opt .= "</optgroup>\n";
}


Помогите исправить! Не заблочить) Правда сказать блок не решает проблему.

  Ответить  
 
 автор: Valick   (29.09.2008 в 14:35)   письмо автору
 
   для: Санька   (29.09.2008 в 14:10)
 

$cat_forum['c'] - это у вас точно массив?
Соответственно $cat_forum "массив массивов"
И тд.

  Ответить  
 
 автор: Санька   (29.09.2008 в 15:11)   письмо автору
26 Кб
 
   для: Valick   (29.09.2008 в 14:35)
 

Не знаю, скорее всего. Вот полный код:

  Ответить  
 
 автор: Valick   (29.09.2008 в 15:30)   письмо автору
 
   для: Санька   (29.09.2008 в 15:11)
 

Посмотрите что у вас в массиве до вызова цикла
print_r ($cat_forum['c']);

и вообще вы исправляете чей-то код или просто выдрали оттуда кусок и пытаетесь вдохнуть в него жизнь?

  Ответить  
 
 автор: Санька   (29.09.2008 в 15:43)   письмо автору
 
   для: Valick   (29.09.2008 в 15:30)
 

print_r ($cat_forum['c']);
а где вы такое нашли такого кода в файле нет.

Пытаюсь если можно сказать исправить чужой код (2 эти ошибки), трекера TorrentPier

  Ответить  
 
 автор: Valick   (29.09.2008 в 15:58)   письмо автору
 
   для: Санька   (29.09.2008 в 15:43)
 

а где вы такое нашли такого кода в файле нет

"тут и сел старик...."

Пришлось ответить цитатой ибо других слов в ближайшее время не предвидится.

  Ответить  
 
 автор: Санька   (29.09.2008 в 16:04)   письмо автору
 
   для: Valick   (29.09.2008 в 15:58)
 

Не понял!

Читал на сайте разработчиков, кричат что хост фуфло не понимает foreach() вот только у меня на компе на денвере стоит ыыы)

  Ответить  
 
 автор: Санька   (29.09.2008 в 16:07)   письмо автору
 
   для: Valick   (29.09.2008 в 15:58)
 

Как быть то? У разработчиков спрашивать нет смысла головы к верху, борзые))

  Ответить  
 
 автор: sim5   (29.09.2008 в 16:14)   письмо автору
 
   для: Санька   (29.09.2008 в 15:43)
 

А это чье: foreach ($cat_forum['c'] as $cat_id => $forums_ary) ? Вам Valiсk предлагает просмотреть, чем является $cat_forum.

  Ответить  
 
 автор: Санька   (29.09.2008 в 16:34)   письмо автору
 
   для: sim5   (29.09.2008 в 16:14)
 

Убрал ['c'] все ошибки изчезли, это не чего не убьет?

  Ответить  
 
 автор: sim5   (29.09.2008 в 16:41)   письмо автору
 
   для: Санька   (29.09.2008 в 16:34)
 

А есть чего убивать?

  Ответить  
 
 автор: Санька   (29.09.2008 в 16:47)   письмо автору
 
   для: sim5   (29.09.2008 в 16:41)
 

Трекер то огромный) Не ну серьезно вы на это и намекали что надо удалить ['c'] ?
Я ведь так и не въехал по началу искал к чему приравнивается $cat_forum но так и не нашел)

  Ответить  
 
 автор: sim5   (29.09.2008 в 17:05)   письмо автору
 
   для: Санька   (29.09.2008 в 16:47)
 

Ну вам никто не на что не намекал. Запись $cat_forum['c'] означет, что берется элемент 'c' массива $cat_forum, а является ли он сам массивом, чтобы его можно было обойти циклом, вам и предлагали проверить. Вы просто убрали ссылку на эелемент, говорите, что заработало, ну если работает, то какие ывопросы. А вот убьет или нет, от куда же нам ведомо, коли кроме куска кода ничего более не известно.
Вы не наугад должны действовать, а разбирать свой скрипт, анализировать, что вызывает ошибки, и устранять их.

  Ответить  
 
 автор: Санька   (29.09.2008 в 17:21)   письмо автору
 
   для: sim5   (29.09.2008 в 17:05)
 

Ну я не кусок кода дал, а целую страницу прикрепил))
При открытии страницы она работала, но вверху были 2 ошибки

Фишка вот в чем: на той странице где были ошибки это поисковик трекеров, пробывал создать форум и тему трекера - с этими ошибками пишет "Доступных для поиска форумов не найдено" без этих ошибок аналогично, что-то не видит(((((((((((

  Ответить  
 
 автор: mihdan   (29.09.2008 в 17:29)   письмо автору
 
   для: Санька   (29.09.2008 в 17:21)
 

Умоляю, положите ЭТО в аттач-невозможно же читать

  Ответить  
 
 автор: Санька   (29.09.2008 в 17:35)   письмо автору
 
   для: mihdan   (29.09.2008 в 17:29)
 

Я выше прикреплял. А код уже нельзя убрать) Мда что то много весит))))

  Ответить  
 
 автор: mihdan   (29.09.2008 в 18:13)   письмо автору
 
   для: Санька   (29.09.2008 в 17:35)
 

Нажмите редактировать и уберите

  Ответить  
 
 автор: Санька   (29.09.2008 в 20:20)   письмо автору
 
   для: sim5   (29.09.2008 в 17:05)
 

" Запись $cat_forum['c'] означет, что берется элемент 'c' массива $cat_forum, а является ли он сам массивом, чтобы его можно было обойти циклом, вам и предлагали проверить."
Помогите, как его проверить? Хочу сделать все по уму, а не удалять (по русски)

  Ответить  
 
 автор: mihdan   (30.09.2008 в 00:15)   письмо автору
 
   для: Санька   (29.09.2008 в 20:20)
 

is_array()

  Ответить  
 
 автор: Valick   (30.09.2008 в 01:48)   письмо автору
 
   для: mihdan   (30.09.2008 в 00:15)
 

Что is_array()?
Я наверное уже уснул и снятся мне кошмары.
2Санька:
Читайте мой пост (29.09.2008 в 15:30 )и если через 3-5 суток до вас не дойдёт "скрытый" смысл моего сообщения, то попробуйте себя найти например в живописи или стихосложении

  Ответить  
 
 автор: Санька   (30.09.2008 в 11:44)   письмо автору
 
   для: Valick   (30.09.2008 в 01:48)
 

Написал
print_r ($cat_forum['c']);

перед
foreach ($cat_forum['c'] as $cat_id => $forums_ary)

выдается еще одна ошибка
Undefined index

Написал
$cat_forum['c']='';

перед
foreach ($cat_forum['c'] as $cat_id => $forums_ary)

изчезает 1 ошибка Undefined index и остается Invalid argument supplied for foreach()

  Ответить  
 
 автор: Valick   (30.09.2008 в 11:57)   письмо автору
 
   для: Санька   (30.09.2008 в 11:44)
 

$cat_forum['c']='';

Зачем????!!!!

Вот теперь когда (наконец-та) посмотрели, что $cat_forum['c'] вообще не существует, надо искать где его потеряли (неплохо бы ещё знать что это вообще такое ну да ладно)

foreach ($allowed_forums as $forum_id)
{
    $f = $forums['f'][$forum_id];
    $cat_forum['c'][$f['cat_id']][] = $forum_id;

    if ($f['forum_parent'])
    {
        $cat_forum['subforums'][$forum_id] = true;
        $cat_forum['forums_with_sf'][$f['forum_parent']] = true;
    }

}

Теперь (точно таким же макаром) смотрим что у нас в $allowed_forums естественно до вызова foreach
print_r ($allowed_forums);

  Ответить  
 
 автор: Санька   (30.09.2008 в 12:08)   письмо автору
 
   для: Valick   (30.09.2008 в 11:57)
 

Пишет Array ( )

  Ответить  
 
 автор: Valick   (30.09.2008 в 12:22)   письмо автору
 
   для: Санька   (30.09.2008 в 12:08)
 

Кто бы мог подумать?))))

В этом месте вашим разрабам уже надо дать железной линейкой по пальцам, чтоб больно было сопливые носы вытирать)))
Массив либо не должен приходить пустым (что маловероятно), либо должна быть проверка

  Ответить  
 
 автор: Санька   (30.09.2008 в 12:32)   письмо автору
 
   для: Valick   (30.09.2008 в 12:22)
 

Проверку надо делать? Или...

  Ответить  
 
 автор: Valick   (30.09.2008 в 13:04)   письмо автору
 
   для: Санька   (30.09.2008 в 12:32)
 

читобы делать проверку, надо сначала разобраться каку он формируется (строчка выше начала цикла) и что он из себя представляет. Но "или..." нужно искать однозначно)

  Ответить  
 
 автор: Санька   (30.09.2008 в 13:13)   письмо автору
2.6 Кб
 
   для: Valick   (30.09.2008 в 13:04)
 

Еще вот что если я зарегистрированый пользователь значит в tracker.php вылазиют эти ошибки, а если не зарегистрирован ошшибок нет.
Понял что он должен показывать, пример http://nntt.org/login.php?redirect=/tracker.php или http://torrents.ru/forum/login.php?redirect=tracker.php
Если я не зарегин должно выводить не сам поиск трекеров, а предложении об авторизации как в др. ссылках а сдесь свободно попадаю в поиск трекеров.

Например должна быть такого рода ссылка http://www.host.ru/forum/login.php?redirect=/forum/memberlist.php

А там http://www.host.ru/forum/tracker.php

Вот так видать http://www.host.ru/forum/login.php?redirect=/forum/tracker.php

Прикрепляю еще:

ХОТЯ Я НА 100% НЕ УВЕРЕН ЧТО ЭТО ТО О ЧЕМ Я ПОДУМАЛ

  Ответить  
 
 автор: Valick   (30.09.2008 в 14:12)   письмо автору
 
   для: Санька   (30.09.2008 в 13:13)
 

Некогда заняться вашей проблемой поплотнее, но обычно если не зареген пользователь, то просматривать трекер он может, а вот ссылку на торрент файл он не получит.

  Ответить  
 
 автор: mihdan   (30.09.2008 в 13:23)   письмо автору
 
   для: Valick   (30.09.2008 в 01:48)
 

>Что is_array()?
>>Помогите, как его проверить?

<?php
if (is_array($array)) echo 'Массив';
?>

  Ответить  
 
 автор: Санька   (30.09.2008 в 13:43)   письмо автору
 
   для: mihdan   (30.09.2008 в 13:23)
 

Проверку уже сделали, эта аналогичная. Проверил

  Ответить  
 
 автор: Valick   (30.09.2008 в 14:17)   письмо автору
 
   для: mihdan   (30.09.2008 в 13:23)
 

кой хрен смысл в вашей проверке если мне надо знать, не только что переменная является массивом но и ее содержимое. До is_array очередь дойдёт в своё время если будем изменять код и добавлять проверку на "массив" и "корректное содержимое массива"

  Ответить  
 
 автор: Санька   (30.09.2008 в 16:46)   письмо автору
 
   для: Valick   (30.09.2008 в 14:17)
 

Я не знаю какие файлы мне скидывать (где лежит ответ) на этот вопрос. Может вы скинете мыло я весь скрипт пришлю? Иного выхода я пока не вижу, или напишите что мне конкретно искать в др. файлах я постараюсь найти.

если будем изменять код и добавлять проверку на "массив" и "корректное содержимое массива" - я только за, с вашей помощью))

  Ответить  
 
 автор: Санька   (01.10.2008 в 11:38)   письмо автору
 
   для: Valick   (30.09.2008 в 14:17)
 

А может проблема в этом: таблицу не выводит.
Вот что у меня:
http://www.sharemania.ru/0241746
А вот как должно быть:
http://www.sharemania.ru/0109921

Вот этот файл:
http://www.sharemania.ru/0178376

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования