2012-10-10 109 views
-4

我使用joomla 2.5,我想獲取不同類別和文章列表的列表。獲取類別和文章列表joomla

我正在使用下面的代碼來獲取所有類別,但我無法獲得類別ID在另一個插入上使用它。

如何在下面給出的選擇列表中獲取這些不同的字段ID。

$db = &JFactory::getDBO(); 
$query = "SELECT DISTINCT title FROM #__categories WHERE published = '1' ORDER BY level"; 
$db->setQuery($query); 
$rows = $db->loadObjectList(); 
?> 
<?php $catagories = (isset($this->settings['catagories']) ? $this->settings['catagories'] : "");?> 
<select id="catagories" name="settings[catagories]"> 
<option value="default" selected="selected">---Default---</option> 
<?php foreach ($rows as $row) {?> 
<option <?php //if ($row->id == $catagories) { echo " selected=\"selected\""; } ?>value="<?php //echo $row->id;?>" > 
<?php echo $row->title;?> 
    </option> 
<?php }?> 
</select> 

回答

0
<?php 
$db = &JFactory::getDBO(); 
$query = "SELECT DISTINCT title FROM #__categories WHERE published = '1' ORDER BY level"; 
$db->setQuery($query); 
$rows = $db->loadObjectList(); 
?> 
<?php foreach ($rows as $row) { 
$query = "SELECT id FROM #__categories WHERE title = " . $row->title . " AND published = '1' LIMIT 1 "; 
$db->setQuery($query); 
$rowid = $db->loadResult(); 
?> 
<option value="<?php echo $rowid;?>" > 
<?php echo $row->title;?> 
    </option> 
<?php }?> 
0

的第一步是做一個查找/替換爲「名作」更改爲「類別」,以確保您的代碼使用同一種語言作爲數據庫表和 - 一個快樂的獎金 - 這是英文!

如果我明白這個問題:你有一個不同類別的標題列表,但沒有這些標題的ID。您不能保證每個標題只能對應一個ID;事實上,如果在查詢中使用「DISTINCT」會對返回的行產生任何影響,那麼至少有兩個ID對應於單個標題。

這是非常不尋常的,所以你可能想回顧爲什麼(i)你有幾個同名(相同名稱)的類別和(ii)這是這種情況,爲什麼他們不應該返回你的形式選擇。

如果事實證明您確實需要提供不同類別標題的列表,並且表單提交需要使用這些標題,則必須有ID,然後選擇每個標題使用哪個ID是不明確的。

假設它並不重要的ID被使用,只要它匹配合適的標題,你可以做到以下幾點:

<?php foreach ($rows as $row) { 
$query = "SELECT id FROM #__categories WHERE title = " . $row->title . " AND published = '1' LIMIT 1 "; 
$db->setQuery($query); 
$row->id = $db->loadResult(); 
?> 
<option <?php if ($row->id == $catagories) { echo " selected=\"selected\""; } ?>value="<?php echo $row->id;?>" > 
<?php echo $row->title;?> 
    </option> 
<?php }?> 

爲了更有效的解決方案,你可以看看在使用UNION您的原始查詢爲每個返回的行提供一個ID。

+0

感謝喬你的時間我試了一下它的工作正常與小errorcorrect代碼是 –