我有一些工作代码,当前在Joomla中生成一个动态的文章列表。这是我正在开发的任务系统的一部分。每篇文章(任务)都有一个自定义的先决条件值分配给它。我已经使用名为Fields Attach的扩展名来分配这些值,它允许您定义自定义文章属性并将它们存储在数据库中。下面的代码列出了所有具有prereq值为0的任务或具有与完成的任务表中任务的物品ID匹配的prereq值的任何任务。检查数组中的所有值是否存在于表中
现在,当用户提交任务时,它将文章信息(ID,标题等)存储在已完成的任务表中。如果一个任务的prereq值与尚未完成任务的id匹配,则不会显示。希望这是有道理的。
所以,我的问题是这样的:我如何存储文章ID的数组?例如,如果我想要一个特定的任务来拥有多个先决条件,我可以将1,2,3等分配给该任务。但是,我该如何检查以确保存储数组中的所有值都存在于完成的任务表中?我必须分配多个先决条件来完成这个系统的工作。它可以帮助显示我当前的代码:
这是我使用的编译列表中查询:
$query = "SELECT c.id, c.title, c.catid, r.user_id, r.prereqID, f.fieldsid, f.articleid, f.value FROM arp2i_fieldsattach_values AS f
LEFT JOIN arp2i_content AS c
ON f.articleid=c.id
AND f.fieldsid=5
AND f.value!=0
LEFT JOIN arp2i_completed_quests AS r
ON r.user_id = $userID
ORDER BY f.articleid, c.id"; // prepare query
$db = &JFactory::getDBO(); // get database object
$db->setQuery($query); // apply query
$prereqs = $db->loadObjectList(); // execute query, return result list
显示列表中的PHP:
foreach ($prereqs as $prereq){ // loop through articles
if ($prereq->fieldsid == 1) {
$questXp2 = $prereq->value;
}
else if ($prereq->fieldsid == 3) {
$hexValue2 = $prereq->value;
}
else if ($prereq->fieldsid == 4) {
$image2 = $prereq->value;
}
if ($prereq->catid == $catID
&& $prereq->prereqID == $prereq->value) {
echo '<div class="questBlock" style="background-color:' . $hexValue2 . ';">' . '<a class="questLink" href="http://localhost/quest/index.php/quests/' . $prereq->articleid . '-' . $prereq->c.title . '">' . '<img src="images/documents/' . $prereq->articleid . '/' . $image2 . ' " />' . $prereq->title . '<span class="xpFloat">' . $questXp2 . ' XP' . '</span>' . '</a>' . '</div>' ;}
}
为了澄清,假设我有4个任务,其中物品ID为1,2,3和4.我希望任务4具有1,2,3的先决条件值。这样,任务4将不会显示,直到任务1,2和3已完成。任何援助将不胜感激。