我有一些工作代碼,當前在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已完成。任何援助將不勝感激。