Следуя этому руководству здесь: http://docs.joomla.org/Selecting_data_using_JDatabase#Selecting_Records_from

Я создал функцию следующим образом:

function getItemForBid() {
        // Get a db connection.
        $db = JFactory::getDbo();

        // Create a new query object.
        $query = $db->getQuery(true);

        // Select item record matching the $orderID
        $query
            ->select($db->quoteName(array('id', 'created_by', 'itemtitle', 'deliverydestination', 'listprice')))
            ->from($db->quoteName('#__entrusters_items'))
            ->where('id = '.$_GET['orderID']);           
        // Reset the query using our newly populated query object.
        $db->setQuery($query);

        // Load the results as a list of stdClass objects (see later for more options on retrieving data).
$db->setQuery($query);
$bidItem = $db->loadObject();
//print_r($bidItem);
}

print_r($bidItem); работает и возвращается, например:

stdClass Object ( 
    [id] => 4 
    [created_by] => 216 
    [itemtitle] => Tennis Racket 
    [deliverydestination] => London 
    [listprice] => 5000 
)

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

<input name="jform[item_id]" id="jform_item_id" value="<?php echo $bidItem->id; ?> " readonly="" type="text">

Я ничего не получаю. В руководстве говорится, что вы можете получить доступ к отдельным значениям, используя:

$result->index // e.g. $result->email

Я делаю что-то очень глупое?

0
larpo 28 Фев 2014 в 22:15

2 ответа

Лучший ответ

$ bidItem является локальным по отношению к созданной вами функции. Объявите его глобальным, чтобы использовать его где-нибудь на странице. Измените последние строки вашей функции, например:

    global $bidItem;
    $bidItem = $db->loadObject();
}

Затем, прежде чем использовать его в своем HTML, добавьте:

<?php global $bidItem; ?>
0
Nathan Dawson 28 Фев 2014 в 18:21

Прежде всего, не используйте $_GET с Joomla, вы должны использовать JInput следующим образом:

$jinput = JFactory::getApplication()->input;
$orderID = $jinput->get('orderID', null, null);

Что касается запроса к базе данных, попробуйте изменить loadObject(); на loadObjectList();

Тогда также не забудьте изменить это:

->where('id = '.$_GET['orderID']);  

К этому:

->where('id = '. $orderID);  
1
Lodder 28 Фев 2014 в 18:22