0

サイトの別の場所に含めたい外部phpスクリプト(locations.phpと呼びましょう)内のk2_itemsテーブルからextra_fieldsフィールドからデータをロードしようとしています。

extra_field フィールドのデータは json エンコードされています。

[{"id":"1","value":"somevalue"},{"id":"2","value":"somevalue"},{"id":"3","value":"somevalue"}.]

例: ID が 1、6、10、15、22、44、および 66 のアイテムがあります。各追加フィールドと各アイテムに変数を設定して、他の場所で使用できるようにしたいと考えています。ID 1 のアイテムに 3 つの追加フィールドがある場合、変数 $item1ExtraField1、$item1ExtraField2、および $item1ExtraField3 が必要です。

まず、Joomla フレームワークを開始しました。

// Get Joomla Framework
defined('_JEXEC') or die('Restricted access');
define( 'JPATH_BASE', realpath(dirname(__FILE__)));
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once (JPATH_BASE.DS.'includes'.DS.'framework.php' );
require_once (JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'factory.php' );

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

次に、2 つの ID で DB クエリを実行して、データを取得できるかどうかを確認しました。

// Load the data from the database.
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select('extra_fields')
->from('#__k2_items')
->where('id = 15 or id= 289');
$db->setQuery($query);
$items = $db->loadObjectList();

// Check for a database error.
if ($db->getErrorNum())
{
    $this->_subject->setError($db->getErrorMsg());
    return false;
}

それから私はゆっくりと迷子になります。試しても結果が得られません:

foreach ($items as $item) {
    echo json_decode($item);
}

そして var_dump は私に与えます

array(2) { [0]=> object(stdClass)#1395 (1) { ["extra_fields"]=> string(1013) "[{"id":"3","value":"somevalue"},{"id":"4","value":"somevalue"}, etc ]

または jdump 拡張機能を使用:

[array] (unknown name) 
    [stdClass object] 0
    Properties
        [string] extra_fields = "[{"id":"3","value":"somevalue"},{"id":"4","value":"somevalue"}, etc ]"
[stdClass object] 1
    Properties
        [string] extra_fields = "[{"id":"3","value":"somevalue"},{"id":"4","value":"somevalue"}, etc ]"

したがって、Joomla フレームワークの初期化は問題ないようです。DB 接続はありますが、続行する方法がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1