1. trade.master13.05.2024 в 19:11от
Загрузка...
Загрузка...

Ошибка в коде

Тема в разделе "Web-программирование", создана пользователем ADVANT, 11.05.2014.

Метки:
  1. ADVANT

    ADVANT

    Статус:
    Оффлайн
    Регистрация:
    26.10.13
    Сообщения:
    412
    Репутация:
    309 +/-
    Здравствуй юхак, сегодня столкнулся с проблемой, сразу к делу.
    Мне нужна ваша помощь в исправлении кода , у меня ошибка в 7-й строке
    Требования кода - РНР версии 5.0 и выше;
    У меня пишет "Warning: Invalid argument supplied for foreach() in /var/www/omega/data/www/******.ru/includes/system-functions.php on line 7"
    Вот сам код:
    PHP:
    function BuildPageTabs()
    {
        global 
    $userbank;
        
    $prefs $GLOBALS['db'] -> GetRow("SELECT * FROM `".DB_PREFIX."_pan_prefs`");
        
    $links $GLOBALS['db']->Execute("SELECT * FROM `".DB_PREFIX."_links` ORDER BY `order` ASC");
        
        foreach(
    $links as $link) {
            if( (
    $link['active'] != 1)
                    ||
                (
    $link['link'] == 'index.php?p=submit' && $GLOBALS['config']['config.enablesubmit'] != 1)
                    ||
                (
    $link['link'] == 'index.php?p=protest' && $GLOBALS['config']['config.enableprotest'] != 1)
                    ||
                ((
    $link['link'] == 'index.php?p=pay' || $link['link'] == 'index.php?p=rules') && $prefs['oplata'] != 2)) {
                    continue;
                }
            
    AddTab($link['anchor'], $link['link'], $link['title'],$link['target']);    
        }

        include 
    INCLUDES_PATH '/CTabsMenu.php';

        
    // BUILD THE SUB-MENU's FOR ADMIN PAGES
        
    $submenu = new CTabsMenu();
        if( 
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_ADMINS|ADMIN_ADD_ADMINS|ADMIN_EDIT_ADMINS|ADMIN_DELETE_ADMINS ) )
            
    $submenu->addMenuItem('Админы'0,'''index.php?p=admin&c=admins'true);
        if(
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_SERVERS|ADMIN_ADD_SERVER|ADMIN_EDIT_SERVERS|ADMIN_DELETE_SERVERS))
            
    $submenu->addMenuItem('Серверы'0,'''index.php?p=admin&c=servers'true);
        if(
    $userbank->HasAccessADMIN_OWNER|ADMIN_ADD_BAN|ADMIN_EDIT_OWN_BANS|ADMIN_EDIT_GROUP_BANS|ADMIN_EDIT_ALL_BANS|ADMIN_BAN_PROTESTS|ADMIN_BAN_SUBMISSIONS))
            
    $submenu->addMenuItem('Баны'0,'''index.php?p=admin&c=bans'true);
        if(
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_GROUPS|ADMIN_ADD_GROUP|ADMIN_EDIT_GROUPS|ADMIN_DELETE_GROUPS))
            
    $submenu->addMenuItem('Группы'0,'''index.php?p=admin&c=groups'true);
        if(
    $userbank->HasAccessADMIN_OWNER|ADMIN_LIST_MODS|ADMIN_ADD_MODS|ADMIN_EDIT_MODS|ADMIN_DELETE_MODS))
            
    $submenu->addMenuItem('МОДы'0,'''?p=admin&c=mods'true);
        if(
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_WEB_SETTINGS)) {
            
    $submenu->addMenuItem('Настройки'0,'''index.php?p=admin&c=settings'true);
            
    $submenu->addMenuItem('Платежка'0,'''?p=admin&c=pay_settings'true);
            
    $submenu->addMenuItem('Заявки'0,'''?p=admin&c=zayavki'true);
            
    $submenu->addMenuItem('Ссылки'0,'''?p=admin&c=links'true);
        }
        
    SubMenu$submenu->getMenuArray() );
    }
    Буду благодарен за любую помощь.
     
  2. MadHamster

    MadHamster

    Статус:
    Оффлайн
    Регистрация:
    13.12.12
    Сообщения:
    38
    Репутация:
    11 +/-
    попробуй вставить проверку на массив или приведение
     
  3. JDeeline

    JDeeline

    Статус:
    Оффлайн
    Регистрация:
    05.05.14
    Сообщения:
    3
    Репутация:
    0 +/-
    Добавляем проверку, является ли $links массивом. Если является, обрабатываем.

    PHP:
    function BuildPageTabs() {
        global 
    $userbank;
        
    $prefs $GLOBALS['db']->GetRow("SELECT * FROM `".DB_PREFIX."_pan_prefs`");
        
    $links $GLOBALS['db']->Execute("SELECT * FROM `".DB_PREFIX."_links` ORDER BY `order` ASC");

        if (
    is_array($links)) {
            foreach(
    $links as $link) {
                if( (
    $link['active'] != 1) || ($link['link'] == 'index.php?p=submit' && $GLOBALS['config']['config.enablesubmit'] != 1) || ($link['link'] == 'index.php?p=protest' && $GLOBALS['config']['config.enableprotest'] != 1) || (($link['link'] == 'index.php?p=pay' || $link['link'] == 'index.php?p=rules') && $prefs['oplata'] != 2)) {
                    continue;
                }
                
    AddTab($link['anchor'], $link['link'], $link['title'],$link['target']);
            }
        }

        include 
    INCLUDES_PATH '/CTabsMenu.php';

        
    // BUILD THE SUB-MENU's FOR ADMIN PAGES
        
    $submenu = new CTabsMenu();
        if( 
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_ADMINS|ADMIN_ADD_ADMINS|ADMIN_EDIT_ADMINS|ADMIN_DELETE_ADMINS ) )
            
    $submenu->addMenuItem('Админы'0,'''index.php?p=admin&c=admins'true);
        if(
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_SERVERS|ADMIN_ADD_SERVER|ADMIN_EDIT_SERVERS|ADMIN_DELETE_SERVERS))
            
    $submenu->addMenuItem('Серверы'0,'''index.php?p=admin&c=servers'true);
        if(
    $userbank->HasAccessADMIN_OWNER|ADMIN_ADD_BAN|ADMIN_EDIT_OWN_BANS|ADMIN_EDIT_GROUP_BANS|ADMIN_EDIT_ALL_BANS|ADMIN_BAN_PROTESTS|ADMIN_BAN_SUBMISSIONS))
            
    $submenu->addMenuItem('Баны'0,'''index.php?p=admin&c=bans'true);
        if(
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_GROUPS|ADMIN_ADD_GROUP|ADMIN_EDIT_GROUPS|ADMIN_DELETE_GROUPS))
            
    $submenu->addMenuItem('Группы'0,'''index.php?p=admin&c=groups'true);
        if(
    $userbank->HasAccessADMIN_OWNER|ADMIN_LIST_MODS|ADMIN_ADD_MODS|ADMIN_EDIT_MODS|ADMIN_DELETE_MODS))
            
    $submenu->addMenuItem('МОДы'0,'''?p=admin&c=mods'true);
        if(
    $userbank->HasAccess(ADMIN_OWNER|ADMIN_WEB_SETTINGS)) {
            
    $submenu->addMenuItem('Настройки'0,'''index.php?p=admin&c=settings'true);
            
    $submenu->addMenuItem('Платежка'0,'''?p=admin&c=pay_settings'true);
            
    $submenu->addMenuItem('Заявки'0,'''?p=admin&c=zayavki'true);
            
    $submenu->addMenuItem('Ссылки'0,'''?p=admin&c=links'true);
        }
        
    SubMenu$submenu->getMenuArray() );
    }
    Но сдаётся мне, ошибка возникает вследствие того, что из базы здесь

    PHP:
    $links $GLOBALS['db']->Execute("SELECT * FROM `".DB_PREFIX."_links` ORDER BY `order` ASC");
    возвращается пустой результат (0 строк).

    Проверьте.
     
  4. djniktih

    djniktih

    Статус:
    Оффлайн
    Регистрация:
    26.02.13
    Сообщения:
    11
    Репутация:
    0 +/-
    Прости, но не уверен, что в опциях foreach можно указывать 2 значение, а нужно 3 ($links as $link_key => $link_value)
     
  5. djniktih

    djniktih

    Статус:
    Оффлайн
    Регистрация:
    26.02.13
    Сообщения:
    11
    Репутация:
    0 +/-
    А так-же откуда берется DB_PREFIX? Если из класса то $this->DB_PREFIX, а если это дефайн попробуй всунуть его в глобалку. Хоть точно и непомню, нуждается ли дефайн в глобальном значении, или он сам по себе глобален...