Вызывающая функция php joomla не работает

Я написал простую страницу PHP, интегрированную с базой данных Joomla. Я написал две функции и назвал их.

если код в функциях написан как нефункциональный (в самом коде), он работает отлично. НО! когда код находится в функции и вызывается со страницы, весь экран становится белым.

код прост... первая функция получает идентификатор пользователя и возвращает сумму чисел в таблице. вторая функция получает имя пользователя и возвращает его идентификационный номер. чтобы убедиться, что функции работают, я отправил им конкретные значения (24 для первой функции и "admin" для второй).

код:

<?php
    defined('_JEXEC') or die('Restricted access');
    $items = $params->get('items', 10);
    $db =& JFactory::getDBO();

    function get_sum($uid)
    {
        $sum = 0;
        $query = "SELECT orderpayment_amount 
            FROM #__j2store_orders 
            WHERE user_id = '$uid' 
            ORDER BY id DESC";
        $db->setQuery( $query, 0 , $items );
        $rows = $db->loadObjectList();
        foreach($rows as $row)
        {
            $sum = $sum + $row->orderpayment_amount;
        }
        return "$sum";
    }

    function getTalId($u)
    { 
        $query = "SELECT id 
                  FROM #__users 
                  WHERE username = '$u' 
                  ORDER BY id DESC";
        $db->setQuery( $query, 0 , $items );
        $rows = $db->loadObjectList();
        foreach($rows as $row)
        {
            return $row->id;
        }
    }

    echo get_sum(42);
    echo getTalId('admin');
?>

Я застрял на два дня с этой проблемой. Буду признателен за любую помощь. спасибо.

1 ответ

То, что вы испытываете, это Белый экран смерти.

Скорее всего, вы отключили отчеты об ошибках (что рекомендуется для производства) t Ошибка есть, но она не отображается на экране. Вы можете либо:

  • Изменить отчет об ошибках (Система> Глобальная конфигурация> Сервер> Отчет об ошибках: Разработка)
  • Проверьте журналы ошибок вашего сервера.

Что касается того, почему это происходит, я бы сказал, что у вас нет доступа к переменной $ db внутри функции (см. Этот ответ).

Если код будет внутри модели класса Jooomla MVC, $db = $this->getDbo() сделал бы подобное.

Я рекомендую вам использовать классы вместо функций, вы получите некоторые дополнительные вещи, такие как автозагрузка

Другие вопросы по тегам