2012-09-30 25 views
0

我有這段代碼,目前差不多做我需要的。它需要從表中選擇所有記錄,然後將它們格式化爲編碼爲JSON。但是,一條記錄將有一個「類型」字段設置爲「默認」。該記錄首先放置在JSON文件中,格式稍有不同。在php中忽略mysql記錄的命令

目前,如果設置爲默認值的記錄是數據庫表中的最後一項,則此功能將會正常工作。但是,如果不是,那麼在編碼爲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框架。我想我會提及它以防萬一它有所作爲,但我不知道如何。

回答

2

添加一個ORDER BY子句:

ORDER by (type = "default") 

這將是0,除了默認的,這是1所有的記錄,所以它會放在最後。

+0

謝謝!這麼簡單,但完美的作品! –

0

WHERE子句添加到你的MySQL聲明:

$query = 'SELECT type, headline, startDate, text, media, caption, credits FROM #__timeline_entries'.$table.' WHERE type <> default'; 
+0

感謝您的回覆。我試過了你的建議,但是這似乎再次打破了它。根本沒有輸出到JSON。我確實需要包含默認記錄,我只需要腳本不關心數據庫中存在的位置,因爲這似乎是問題所在。如果我最後創建了默認記錄,它就可以工作。將其他記錄更改爲默認值,然後中斷。 :( –