[英]How do I get MySQL query results from component menu item in Joomla and refine with a foreach where clause?
我有定制組件J 2.5。 在該組件的菜單中,我也有sql字段:
<field
name="title"
type="sql"
default="10"
label="აირჩიეთ კატეგორია"
multiple="multiple"
query="SELECT id AS value, title FROM #__deals_categories"
/>
我從函數中獲取數據並將其存儲在$category
數組中:
$dealsparam = JFactory::getApplication()->getParams();
$category = $dealsparam->get(title, 10);
$ category的輸出是數組:
Array ( [0] => 20 [1] => 23 [2] => 33 [3] => 41 [4] => 49 )
這些是數據庫中的類別ID。 另外,我還有一個從這些類別中獲取內容的功能。 當我有一個類別ID時,一切正常,但是當我有多個類別ID時:例如2、4、5等,則無法從mysql獲取數據。 我嘗試foreach一個where子句,但是有一些我無法理解的錯誤。
在下面的內容中,我嘗試遍歷where子句並從許多不同的類別中獲取數據:
if ($category) {
print_r ($category);
foreach ($category as $cat){
$query->where('d.category_id = ' . (int) $cat);
echo $cat.'<br>';
}
}
您應該使用IN
而不是=
condition-
$category = (array) $category;
jimport('joomla.utilities.arrayhelper');
JArrayHelper::toInteger($category);
if(!empty($category)){
$query->where('d.category_id IN(' . implode(',', $category) . ')');
}
您使用'$ query-> where'語句執行的操作是在查詢中添加'AND'SQL條件。 因此,如果一項僅屬於一個類別,則不會有任何項匹配。 您有兩種選擇:1-由Irfan聲明:使用IN(category1,category2,...)2-使用'OR'組成查詢:
(d.category_id = category1) OR (d.category_id = category2) ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.