0

私は現在、私が必要としていることをほぼ実行しているこのコードを持っています。テーブルからすべてのレコードを選択し、JSONにエンコードできるようにフォーマットする必要があります。ただし、1つのレコードの「タイプ」フィールドは「デフォルト」に設定されます。このレコードは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 に答える