Hallo zusammen,
ich habe ein kleines Problem und komme mit der Cache-Verarbeitung nicht weiter.
Folgende Datei habe ich für die Portalbox erstellt
<?php
// wcf imports
require_once(WCF_DIR.'lib/system/cache/CacheBuilder.class.php');
class CacheBuilderPortalWebdisk implements CacheBuilder {
/**
* @see CacheBuilder::getData()
*/
public function getData($cacheResource) {
$data['newDatabaseItems'] = array();
$sql = "SELECT a.name, a.releaseTime, a.active, a.productID, b.public, b.priceLicense, b.productID
FROM wcf".WCF_N."_customer_storage a
LEFT JOIN wcf".WCF_N."_customer_product b
ON (a.productID = b.productID)
WHERE a.active = 1, b.public = 0
ORDER BY a.releaseTime DESC
LIMIT ".DATABASE_ITEM_VIEW_TOP."";
$result = WCF::getDB()->sendQuery($sql);
while($row = WCF::getDB()->fetchArray($result)) {
$data['newDatabaseItems'][] = $row;
}
return $data;
}
}
?>
Alles anzeigen
Nun bekomme ich aber diese Fehlermeldung ausgegeben wenn ich das Portal aufrufe:
You get more information about the problem in our knowledge base: http://www.woltlab.com/help/?code=1064
Information:
error message: Invalid SQL: SELECT a.name, a.releaseTime, a.active, a.productID, b.public, b.priceLicense, b.productID FROM wcf1_customer_storage a LEFT JOIN wcf1_customer_product b ON (a.productID = b.productID) WHERE a.active = 1, b.public = 0 ORDER BY a.releaseTime DESC LIMIT 5
error code: 1064
sql type: MySQLDatabase
sql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' b.public = 0 ORDER BY a.releaseTime DESC LIMIT 5' at line 5
sql error number: 1064
sql version:
file: /www/htdocs/w00b2576/sumlinemediade/wcf/lib/system/database/MySQLDatabase.class.php (118)
php version: 5.3.13-nmm1
wcf version: 1.1.9 (Tempest)
date: Fri, 20 Jul 2012 12:03:43 +0000
request: /index.php?page=Portal
referer: http://wbb.sumline-media.de/in…&productID=1&categoryID=0
Stacktrace:
#0 /www/htdocs/w00b2576/sumlinemediade/lib/system/cache/CacheBuilderPortalWebdisk.class.php(31): MySQLDatabase->sendQuery('SELECT a.name, ...')
#1 /www/htdocs/w00b2576/sumlinemediade/wcf/lib/system/cache/CacheHandler.class.php(173): CacheBuilderPortalWebdisk->getData(Array)
#2 /www/htdocs/w00b2576/sumlinemediade/wcf/lib/system/cache/CacheHandler.class.php(126): CacheHandler->rebuild(Array)
#3 /www/htdocs/w00b2576/sumlinemediade/lib/system/portalbox/cachebuilder/DefaultCacheBuilder.class.php(28): CacheHandler->get('box-19')
#4 /www/htdocs/w00b2576/sumlinemediade/lib/data/boxes/PortalBox.class.php(117): DefaultCacheBuilder->execute('19', 'CacheBuilderPor...', 'type2', '0', '0')
#5 /www/htdocs/w00b2576/sumlinemediade/lib/system/portalbox/PortalBoxFactory.class.php(102): PortalBox->initialize()
#6 /www/htdocs/w00b2576/sumlinemediade/lib/system/portalbox/PortalBoxFactory.class.php(44): PortalBoxFactory->initializeBoxes(false)
#7 /www/htdocs/w00b2576/sumlinemediade/lib/page/PortalPage.class.php(120): PortalBoxFactory->__construct(true, false, true, true, true)
#8 /www/htdocs/w00b2576/sumlinemediade/lib/page/PortalPage.class.php(105): PortalPage::getPortalBoxes()
#9 /www/htdocs/w00b2576/sumlinemediade/wcf/lib/page/AbstractPage.class.php(90): PortalPage->readData()
#10 /www/htdocs/w00b2576/sumlinemediade/lib/page/PortalPage.class.php(147): AbstractPage->show()
#11 /www/htdocs/w00b2576/sumlinemediade/wcf/lib/page/AbstractPage.class.php(46): PortalPage->show()
#12 /www/htdocs/w00b2576/sumlinemediade/wcf/lib/util/RequestHandler.class.php(64): AbstractPage->__construct()
#13 /www/htdocs/w00b2576/sumlinemediade/wcf/lib/util/RequestHandler.class.php(92): RequestHandler->__construct('Portal', Array, 'page')
#14 /www/htdocs/w00b2576/sumlinemediade/index.php(8): RequestHandler::handle(Array)
#15 {main}
Kann mir jemand helfen?
Wenn ich es nur so machen, dann funktioniert das
<?php
// wcf imports
require_once(WCF_DIR.'lib/system/cache/CacheBuilder.class.php');
class CacheBuilderPortalWebdisk implements CacheBuilder {
/**
* @see CacheBuilder::getData()
*/
public function getData($cacheResource) {
$data['newDatabaseItems'] = array();
$sql = "SELECT *
FROM wcf".WCF_N."_customer_storage
WHERE `active` = '1'
ORDER BY `releaseTime` DESC
LIMIT ".DATABASE_ITEM_VIEW_TOP."";
$result = WCF::getDB()->sendQuery($sql);
while($row = WCF::getDB()->fetchArray($result)) {
$data['newDatabaseItems'][] = $row;
}
return $data;
}
}
?>
Alles anzeigen
Aber so habe ich nur den Name, daher muss ich in diese Tabelle
wcf".WCF_N."_customer_product
um den Preis ebenfalls anzuzeigen.
Kann mir jemand helfen?