0

我有这段代码,目前几乎可以满足我的需要。它需要从表中选择所有记录,然后将它们格式化以准备好编码为 JSON。但是,一个记录将有一个“类型”字段设置为“默认”。这条记录首先放在 JSON 文件中,格式略有不同。

目前,如果设置为默认值的记录是数据库表中的最后一个条目,则此方法非常有效。但是,如果不是,则在编码为 JSON 时格式会中断。

任何人都可以帮助建议一个修复程序,迫使它忽略默认条目的位置,但保留格式?

// Get the data from the DB.

$query = 'SELECT  type, headline, startDate, text, media, caption, credits FROM #__timeline_entries'.$table.'';
$db->setQuery($query);
// Load it and put it into an array

$list = $db->loadObjectList();

$len = count($list);

$data = array();

for ($i = 0; $i < $len; $i++) {
$temp = (array) $list[$i];

$temp["asset"] = array(
    "media" => $temp["media"],
    "credit" => $temp["credits"],
    "caption" => $temp["caption"]
);
unset($temp["media"]);
unset($temp["credits"]);
unset($temp["caption"]);

if ($temp["type"] == "default") {
    $data = $list[$i];
    unset($list[$i]);

    $list[$i] = $temp;
  }
}

// Prep it for JSON
$data->date = &$list;

// Loop it once more!
$dataTwo->timeline = &$data;

// Encode the data to JSON.
$jsondata = json_encode($dataTwo);

这是 Joomla 组件的一部分,但它并没有真正使用数据库连接之外的任何 Joomla 框架。我想我会提到它以防万一它有什么不同,虽然我不明白如何。

4

2 回答 2

2

添加 ORDER BY 子句:

ORDER by (type = "default")

对于除默认值 1 之外的所有记录,这将为 0,因此它将放在最后。

于 2012-09-30T17:29:33.667 回答
0

在 MySQL 语句中添加 WHERE 子句:

$query = 'SELECT  type, headline, startDate, text, media, caption, credits FROM #__timeline_entries'.$table.' WHERE type <> default';
于 2012-09-30T16:45:50.100 回答