2013-03-08 96 views
0

我试图从外部php脚本(我们称之为locations.php)内的k2_items表中的extra_fields字段加载数据,我想将其包含在网站上的其他位置。在外部脚本中获取K2额外字段数据

数据在extra_field字段JSON编码:

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

例如:我有IDS 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(); 

然后我试图DB查询与2个IDS,看看我是否能得到数据:

// 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连接是有,但我不知道如何继续。

任何帮助,将不胜感激。

+0

foreach($ items as $ item){ echo $ item-> id;
echo $ item-> value; } – Arunu 2013-03-08 05:48:34

回答

0

我看到问题是解码json字符串。试试这样:

$query = mysql_query($sql,$con); 
while ($item = mysql_fetch_array($query)) 
{ 
$fields =(array)json_decode($item['extra_fields']); 
$field1 = $fields[0]->value; 
$field2 = $fields[1]->value; 
}