我只需要处于用户所在国家/地区的“__sobi2_item”表中的项目。并将此结果用于Showupdatelisting函数的其余部分。这是我的PHP脚本:
<?php
function showUpdatedListing()
{
//i found the user country field value...
global $database;
$user =& JFactory::getUser();
$userId = $user->get( 'id' );
$sql = "SELECT (id) FROM #__community_fields WHERE fieldcode= 'FIELD_COUNTRY'";
$database->setQuery( $sql );
$fieldID = $database->loadResult();
$sql = "SELECT (value) FROM #__community_fields_values WHERE field_id= {$fieldID} && user_id= {$userId}";
$database->setQuery( $sql );
$usercountry = $database->loadResult();
// From all the entries i take only ones that have country field like the user has...
$query = "SELECT `data_txt`, `itemid`, `fieldid` FROM `#__sobi2_fields_data` WHERE (`fieldid` = 6) AND ('data_txt' = {$usercountry})";
$database->setQuery($query);
$ResultsArray = $database->loadObjectList();
// We need something here like a Query to load only the entries from $ResultsArray... ??
//....instead of this...
$config =& sobi2Config::getInstance();
$database = $config->getDb();
$now = $config->getTimeAndDate();
$query = "SELECT itemid FROM #__sobi2_item WHERE (published = 1 AND publish_down > '{$now}' OR publish_down = '{$config->nullDate}') ORDER BY last_update DESC LIMIT 0, 30";
$database->setQuery($query);
$sids = $database->loadResultArray();
// ......... show update function goes on...
?>
注意:对于最后一个查询(4),我需要过滤$ ResultsArray的项目,只接受已发布的项目并通过last_update对它们进行排序。我知道它是错的,现在之前没有与查询的连接。这就是我在mysql中的表格:
的itemid fieldid data_txt ---&gt;(是每个字段的描述列)
的itemid 已发布---&gt;(如果为1则为1,如果为false则为0) last_update ---&gt;(项目的最后更新日期,如果没有变化,也等于发布日期)
感谢。
答案 0 :(得分:1)
我不知道你要问的是什么。您的上一个查询(编号4)对我没有意义,它是如何与上述查询相关联的?
[编辑] 我已将上面的第4个表格链接起来,假设itemid是sobi2_item表中项目的主键,并且该值通过itemid链接到sobi_fields_data表。
SELECT
cf.id,
sfd.data_txt,
sfd.itemid,
sfd.fieldid
FROM #__community_fields cf
INNER JOIN #__community_fields_values cfv ON cf.id=cfv.field_id
INNER JOIN #__sobi2_fields_data sfd ON cfv.value=sfd.data_txt
INNER JOIN #__sobi2_item si ON sfd.itemid=si.itemid
WHERE cf.fieldcode='FIELD_COUNTRY'
AND cfv.user_id=$userId
AND sfd.fieldid=6
AND si.published=1
AND (si.publish_down > '{$now}' OR si.publish_down = '{$config->nullDate}')
ORDER BY si.last_update DESC LIMIT 0, 30
祝你好运!